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

Gradle新手求教:如何将同级项目编译的Jar复制到指定目录?

同级Gradle项目Jar文件复制实现方案

假设你的项目目录结构如下:

root/
├── projectA/
│   ├── build.gradle
│   └── src/
└── projectB/
    ├── build.gradle
    └── src/

1. 配置多项目构建(根目录操作)

在两个项目的共同根目录下新建settings.gradle文件,添加以下内容:

include ':projectA', ':projectB'

这一步让Gradle将两个项目纳入同一个构建体系,方便后续任务依赖和文件引用。

2. 给项目A添加复制任务

打开projectA目录下的build.gradle,插入以下任务配置:

// 定义复制任务,命名为copyProjectBJar
task copyProjectBJar(type: Copy) {
    // 源文件:指向projectB编译生成的Jar包
    from project(':projectB').jar.archiveFile
    // 目标目录:替换成你需要的projectA内的指定路径,示例为测试资源目录下的libs文件夹
    into "${projectDir}/src/test/resources/libs"
}

// 让测试任务依赖复制任务,确保运行测试前Jar已就位
test.dependsOn copyProjectBJar

代码说明

  • type: Copy:使用Gradle内置的复制任务类型,无需自己实现复制逻辑
  • from:指定要复制的源文件,project(':projectB').jar.archiveFile会自动指向projectB编译后生成的Jar文件(适配版本号或路径变化)
  • into:设置Jar要复制到的目标目录,${projectDir}代表projectA的根目录,按需修改路径即可
  • test.dependsOn copyProjectBJar:绑定测试任务和复制任务,运行测试时会自动先执行复制操作

3. 执行任务

  • 手动执行复制任务:在根目录下运行
./gradlew :projectA:copyProjectBJar
  • 直接运行测试(会自动先完成Jar复制):在根目录下运行
./gradlew :projectA:test

备选方案(无多项目构建)

如果不想用多项目构建,可直接指定projectB的Jar路径,但这种方式需要手动确保projectB已编译:

task copyProjectBJar(type: Copy) {
    from '../projectB/build/libs/projectB-*.jar' // 用通配符匹配Jar文件
    into "${projectDir}/src/test/resources/libs"
}

执行前需先编译projectB:

cd ../projectB && ./gradlew jar && cd ../projectA
./gradlew copyProjectBJar

这种方式灵活性差,不推荐用于长期维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:55:18