有的时候,我们需要将项目所有依赖库打成一个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
解决本地仓库快速生成Maven Shade Plugin源码jar问题

本文介绍如何在不发布到远程仓库的情况下,使用Maven Shade Plugin为快照版本生成并安装source.jar,包括配置方法和具体操作步骤。
886

被折叠的 条评论
为什么被折叠?



