实现目标
maven打包,在生成的jar包中带有源代码。记住,这个带源代码的意思是源代码跟编译生成的文件放在一个jar文件里面,而不是单独的一个XXX-source.jar包。
实现思想
把源代码当作资源文件
实现方法一
<build> <resources> <resource> <directory>src/main/java</directory> </resource> </resources> </build>
说明:默认的资源文件夹是src/main/resource,此方法修改了资源文件夹,让你默认的资源文件夹变成了src/main/java文件夹。而这个文件夹在maven中是默认放置源代码的。
缺点:修改之后,src/main/resource文件夹就不是资源文件夹了,放在里面的文件将不会被当作资源。
实现方法二
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.3</version> <executions> <execution> <id>copy-resources</id> <phase>process-resources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.outputDirectory}</outputDirectory> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.java</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin>
说明:插件maven-resources-plugin默认处理资源和测试资源,把资源加入到文件夹${project.build.outputDirectory}
,这个引用表示项目的输出文件夹。一般是项目的WEB-INF\classes
文件夹。等到打包的时候,就把这个文件夹里面的内容打包成jar文件。所以想要把源代码打包到jar文件里面,就需要把源代码当作资源文件添加到文件夹${project.build.outputDirectory}
。
缺点:代码比较长
优点:不会修改资源文件夹,项目结构不用改变,推荐使用这一种