You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Maven copy-dependencies仅复制第三方依赖至统一lib目录

仅复制第三方依赖,排除子模块JAR的Maven配置方案

你可以在根模块的POM中配置maven-dependency-plugin,通过指定excludeGroupIds参数过滤掉自身项目groupId下的所有子模块依赖,无需修改任何子模块POM。

具体配置示例

在根POM的<build> -> <plugins>节点中添加以下配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.6.0</version> <!-- 使用最新稳定版即可 -->
    <executions>
        <execution>
            <id>copy-third-party-dependencies</id>
            <phase>package</phase> <!-- 绑定到package阶段,或按需选择其他阶段 -->
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.basedir}/lib</outputDirectory> <!-- 顶层lib目录 -->
                <excludeGroupIds>你的项目groupId</excludeGroupIds> <!-- 替换成实际项目的groupId -->
                <excludeArtifactIds>可按需添加特定排除的artifactId,非必需</excludeArtifactIds>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>false</overWriteSnapshots>
            </configuration>
        </execution>
    </executions>
</plugin>

关键参数说明

  • excludeGroupIds:指定要排除的依赖groupId,填你项目自身的groupId后,所有属于该groupId的子模块依赖都会被过滤,只保留第三方依赖。
  • outputDirectory:指定依赖复制到的顶层lib目录路径,使用${project.basedir}确保指向根项目目录。
  • overWriteReleases/Snapshots:设置为false可以避免重复复制已存在的稳定版/快照版依赖,提升CI/CD执行效率。

CI/CD执行命令

在CI/CD流程中执行以下命令触发构建并复制依赖:

mvn clean package -DskipTests

或者直接单独执行依赖复制目标:

mvn dependency:copy-dependencies -DskipTests

验证效果

执行完成后,根目录下的lib目录只会包含第三方依赖JAR,子模块自身的JAR不会被复制。后续在Dockerfile中可以单独复制子模块的构建产物(比如target/*.jar),而lib目录作为独立层进行缓存——因为第三方依赖变更频率远低于业务代码,能有效提升Docker镜像构建速度。

内容的提问来源于stack exchange,提问作者Vijay Jangir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 06:30:01