【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文件,该文件是不包含依赖包的。

posted @ 2020-12-17 10:54    阅读(1163)  评论(0编辑  收藏  举报