【Maven】使用插件拷贝jar包到指定目录
背景
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文件,该文件是不包含依赖包的。