背景
java項目模塊的jar包默認會生成到target目錄,如果希望將所有模塊的jar包統一復制到指定目錄,本文給出了解決方法
解決
使用maven-antrun-plugin插件,使用如下:
<plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>package</phase> <configuration> <tasks> <copy todir="指定目錄完整路徑"> <!-- project.build.directory表示各個模塊的target目錄 --> <fileset dir="${project.build.directory}"> <!-- 需要復制的jar包文件名稱 --> <include name="${project.artifactId}-${project.version}.jar"/> </fileset> </copy> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins>
上面的方法有個問題,有些復制到指定目錄的jar包不包含依賴的第三方jar文件,有些又包含。原因不明
如果指定需要復制的每個模塊名稱、路徑就可以解決此問題(tasks部分)
<tasks> <copy todir="指定目錄完整路徑" overwrite="true"> <fileset dir="模塊A target 目錄完整路徑"> <!-- 模塊jar文件名稱 --> <include name="A.jar"/> </fileset> </copy> <copy todir="指定目錄完整路徑" overwrite="true"> <fileset dir="模塊B target 目錄完整路徑"> <include name="B.jar"/> </fileset> </copy> </tasks>
其它
關於【有些生成的jar不會包含依賴包】的可能原因:復制的是target目錄下jar.original文件,該文件是不包含依賴包的。