常用 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运行)。