开发Java服务端项目的时候,经常需要开发SDK作为依赖包提供给目标工程引用。但是目标工程在运行的调试的时候断点到依赖包里面的代码,由于依赖包的代码是编译后端class类,和源码有不少差异,不方便阅读。所以在开发的时候最好生成源码形式的依赖包,方便调试。
maven本地仓库下的依赖包结构如下
有-sources后缀的jar包是源码包,开发模式下查看源码会默认查看source包下面的源码。但是一般使用mvn install命令编译工程只会生成非源码的包。想要生成source包有两种方法。
方法一:
在pom.xml中添加生成source包的编译插件,如下图所示,加上maven-source-plugin这个插件就能生成source包
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
但是使用这种方法,在发布release版的包时还需要修改pom.xml文件,去掉这个plugin。
方法二:
直接使用不同的mvn命令编译。
使用mvn clean install 命令只会生成非源码包。
如果使用mvn source:jar install 命令进行编译就会同时生成源码包和非源码包。
mvn clean install -Dcheckstyle.skip -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -f pom.xml
mvn clean source:jar install -Dcheckstyle.skip -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -f pom.xml