常用 Maven 插件总结
1、maven-source-plugin 提供项目自动将源码打包并发布的功能,在需要发布源码项目的pom.xml文件中添加如下代码即可执行mvn install,maven会自动将source install到repository 。 … 执行mvn source:jar,单独打包源码。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <!-- 绑定source插件到Maven的生命周期,并在生命周期后执行绑定的source的goal --> <executions> <execution> <id>attach-sources</id> <!-- 绑定source插件到Maven的生命周期 --> <phase>package</phase> <goals> <!--在生命周期后执行绑定的source插件的goals --> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
2、maven-compiler-plugin 编译Java源码,一般只需设置编译的jdk版本。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin>
- source: 源代码编译版本;
- target: 目标平台编译版本;
- encoding: 字符集编码。
3、spring-boot-maven-plugin 插件后,当运行maven打包的命令,项目会被打包成一个可以直接运行的jar包,使用"java -jar"可以直接运行。其中xxx-0.0.1-SNAPSHOT.jar.original文件,用户可将.original后缀去掉便可得到用户自己编写的项目包。而xxx-0.0.1-SNAPSHOT.jar文件往往比上面那个文件要大的多,其实其内部已经将用户编写的项目所相关的依赖都打进去了。
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.0.5.RELEASE</version> <configuration> <mainClass>com.xx.xx</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>
问题,打包后是直接可运行的jar, 其他的项目无法直接依赖可运行的jar,解决方案:
<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <id>repackage</id> <configuration> <classifier>exec</classifier> </configuration> </execution> </executions> </plugin> </plugins>
查看包的输出目录,果真有两个相似名称的包,一个是[name]-[version].jar,另一个是[name]-[version]-exec.jar。解压对比了这两个jar,发现名称含有-exec为可运行包,而另一个为普通包(不可通过 java -jar运行)。