1. 程式人生 > >maven如何實現創建帶源代碼的jar包

maven如何實現創建帶源代碼的jar包

tag number export includes -a porting 項目 源代碼 改變

實現目標

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}
缺點:代碼比較長
優點:不會修改資源文件夾,項目結構不用改變,推薦使用這一種

參考資源

    • http://stackoverflow.com/questions/25779900/how-to-include-source-file-java-file-parallel-to-class-file-in-the-generated
    • http://stackoverflow.com/questions/23933911/include-source-code-while-exporting-a-jar-using-maven

maven如何實現創建帶源代碼的jar包