有的时候,我们需要将项目所有依赖库打成一个fat-jar,提供给客户,同时提供对应的source.jar
。
这个功能很好实现在pom.xml
中增加maven-shade-plugin
插件执行就可以,如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>false</minimizeJar>
<!-- 创建source.jar -->
<createSourcesJar>true</createSourcesJar>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>standalone</shadedClassifierName>
</configuration>
</execution>
</executions>
</plugin>
但是执行mvn install
安装生成的jar包到本地仓库时并不会生成项目对应的source.jar
.只有mvn deploy
发布到远程仓库时才会安装source.jar
,如果我没有远程仓库,或不想发布到远程仓库,或者我只是在开发期频繁生成快照版本(SNAPSHOT),上述的maven-shade-plugin
插件就生成的source.jar
并不包含项目的源码,因为它找不到项目对应的源码。
怎么办呢?经过反复摸索,找到为快照版本安装source.jar
到本地仓库的办法,也很简单:
正常我们只是执行mvn install
,安装快照版本到本地仓库,现在只要多一条source:jar
让maven在执行install
命令的同时生成source.jar
并安装到本地仓库,如下:
mvn source:jar install