使用Maven打包時包含資源文件和源碼到jar的方法
Maven打包時包含資源文件和源碼到jar
在使用Maven打包時,我們發現最終打包之後jar中隻有已經編譯完成的代碼class,資源文件都沒瞭,如果有資源文件需要打包進jar的話,直接打包jar無法正常工作。
其實,在pom.xml中配置一下<build>節點即可實現把資源打包進來的操作。
在<build>中添加以下內容
<resources> <resource> <directory>${basedir}/src/main/resources</directory> <includes> <include>**/*.*</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>${basedir}/src/main/java</directory> <includes> <include>**/*.*</include> </includes> <excludes> <exclude>**/*.java</exclude> </excludes> <filtering>false</filtering> </resource> </resources>
可以看到,添加的<resources>節點中有兩個<resource>子節點,分別配置瞭兩個不同的地方的內容打包進jar(一般資源文件放在項目resource文件夾和源代碼文件夾裡面),其中每一個<resource>節點中的內容
意義如下
<directory>
為被打包的資源文件的路徑,${basedir}表示這個項目的根目錄。<includes>
被包含的文件,裡面的<include>**/*.*</include>表示包含其中的所有文件和文件夾。<filtering>
是否過濾資源文件,默認false。<excludes>
要排除的文件,上面的配置內容中排除瞭所有的java源代碼文件防止把源代碼也打包進去瞭。
如果在別的地方有資源文件,可以自己再添加<resource>節點,格式按照這個來。
需要說明的是一些jar外部包因為包含java doc註釋,所以也需要將源代碼文件包含進去。
這樣的話也很簡單,把上面的第二個<resource>節點中的整個<excludes>節點去掉即可。(即不配置排除java源代碼文件)
maven打包時包含源碼的問題
由於jar包和項目分開打包,並且jar包打包後不會帶註釋,會對代碼調試增加難度,所以增加瞭jar包攜帶源碼的方式,解決方式如下
1.maven-source-plugin提供項目自動將源碼打包並發佈的功能
在需要發佈源碼項目的pom.xml文件中添加如下代碼即可:
<!-- Source attach plugin --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
2.刪除target文件夾
3.mvan執行
- 執行 mvn install,maven會自動將source install到repository 。
- 執行 mvn deploy,maven會自動將source deploy到remote-repository 。
- 執行 mvn source:jar,單獨打包源碼。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- maven打包zip包含bin下啟動腳本的完整代碼
- SpringBoot分離打Jar包的兩種配置方式
- 解決maven沒有打包xml文件的問題
- Java基礎之Maven詳解
- Springboot打包成jar發佈的操作方法