目录
1) Setting the -source and -target of the Java Compiler
3 maven-source-plugin,maven-javadoc-plugin
1)执行maven命令,mvn clean package,执行完成后你就会看到如下图所示:
8 maven-assembly-plugin (不理解 以前老大讲过忘了...记录一下 万一记起来了呢)
1 maven maven-compiler-plugin
maven打包pom文件节点在windows和linux下的格式差异:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArguments>
<verbose></verbose>
<bootclasspath>
${JAVA_HOME}/jre/lib/rt.jar${path.separator}${JAVA_HOME}/jre/lib/jce.jar
</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
1) Setting the -source and -target of the Java Compiler
设置这两个参数去修改jdk版本
<source>1.8</source> <!-- 源代码使用的开发版本 -->
<target>1.8</target> <!-- 需要生成的目标class文件的编译版本 -->
2)compilerArguments
<!-- 这个选项用来传递编译器自身不包含但是却支持的参数选项 -->
maven是个项目管理工具,如果我们不告诉它我们的代码要使用什么样的jdk版本编译的话,它就会用maven-compiler-plugin默认的jdk版本来进行处理,这样就容易出现版本不匹配的问题,以至于可能导致编译不通过的问题。例如代码中要是使用上了jdk1.7的新特性,但是maven在编译的时候使用的是jdk1.6的版本,那这一段代码是完全不可能编译成.class文件的。为了处理这一种情况的出现,在构建maven项目的时候,我习惯性第一步就是配置maven-compiler-plugin插件。
3)${path.separator}
${path.separator}这个分隔符,在Windows系统下是“;”分号,在Linux下是“:”冒号。
为了使打包时自动选择,可以使用${path.separator}
2 maven-bundle-plugin
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<version>3.0.1</version>
</plugin>
3 maven-source-plugin,maven-javadoc-plugin
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
1)执行maven命令,mvn clean package,执行完成后你就会看到如下图所示:
看到上面的图后,说明maven通过sourse,javadoc插件生产对应项目的源码包和文档包成功,如果你还需要发布到自己的私服,那么就再执行一条命令:mvn deploy就可以发布到你自己的私服上了,这样同项目组的人员就可以查看你的项目的源码和文档了!
4 maven-surefire-plugin
如果你执行过mvn test或者执行其他maven命令时跑了测试用例,你就已经用过maven-surefire-plugin了。maven-surefire-plugin是maven里执行测试用例的插件,不显示配置就会用默认配置。这个插件的surefire:test命令会默认绑定maven执行的test阶段。
最简单的配置方式就不配置或者是只声明插件。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
</plugin>
这个时候maven-surefire-plugin会按照如下逻辑去寻找JUnit的版本并执行测试用例。
5 maven-dependency-plugin
<!--
copy dependencies to target/lib directory on package phase
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
</plugin>
用于复制依赖的jar包到指定的文件夹里
6 maven-jar-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
</plugin>
打成jar时,设定manifest的参数,比如指定运行的Main class,还有依赖的jar包,加入classpath中
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>/data/lib</classpathPrefix>
<mainClass>com.zhang.spring.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
7 maven-resources-plugin(重点)
https://blog.youkuaiyun.com/u014515854/article/details/79166061
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
</plugin>
<resources>
<resource>
<!--目标文件:需要操作的资源目录-->
<directory>src/main/resources/</directory>
<filtering>true</filtering>
<includes>
<!--目标文件:需要操作的资源目录下的properties为后缀的文件其他的后缀文件不会被打包-->
<include>**/*.properties</include>
</includes>
</resource>
<resource>
<directory>src/main/resources/</directory>
<filtering>false</filtering>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
resource的filtering属性用来表示资源文件中的占位符是否需要被替换,true为需要替换。这个不写的话就等着抓脑袋吧。。。。
上面的定义是所有的.properties文件中的EL表达式占位符都会在打包时动态替换,所有的.xml文件则不会替换占位符。
8 maven-assembly-plugin (不理解 以前老大讲过忘了...记录一下 万一记起来了呢)
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
1)assembly文件
<assembly>
<id>assembly</id>
<formats>
<format>tar.gz</format>
<format>dir</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.directory}/jccfc-dubbo/META-INF/assembly/bin</directory>
<outputDirectory>bin</outputDirectory>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>${profiles.dir}/${env}</directory>
<outputDirectory>conf</outputDirectory>
<fileMode>0644</fileMode>
</fileSet>
<fileSet>
<directory>${project.basedir}/libs</directory>
<outputDirectory>lib</outputDirectory>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
箭头指向的都是同一个东西或者包含在打包里面