我有两个项目 A 和 B,它们位于一个存储库中。 B 使用 A 中的一些函数,因此我想在运行 B 之前编译 A。我发现这可以使用 Gradle 复合构建来完成。我创建了如下结构的 Gradle 项目。
结构:
|
|--A
| |src
| |build.gradle
| |settings.gradle
|
|--B
| |src
| |build.gradle
| |settings.gradle
A.build.gradle:
apply plugin: 'idea'
subprojects {
apply plugin: 'java'
apply plugin: 'idea'
group "com.check"
version "1.0"
repositories {
jcenter()
}
}
A.settings.gradle:
rootProject.name = 'A'
B.build.gradle:
apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'idea'
group "com.check"
version "1.0"
mainClassName = "com.check.B.Inititate"
dependencies {
compile "com.check:A:1.0"
}
repositories {
jcenter()
}
B.settings.gradle:
rootProject.name = 'B'
B项目启动方法:
package com.try.run;
import com.check.A.check;
public class Initiate {
public static void main(String[] args) {
System.out.println(check.ret());
}
}
使用 gradle 构建此代码时出现以下错误
CONFIGURE SUCCESSFUL
Total time: 0.268 secs
Could not resolve: com.check:A:1.0
注意:我使用的是 ecilipse Oxygen 版本并运行刷新 gradle 项目来构建项目
最佳答案
我忘记在 b.settings.gradle 上添加以下行:
b.settings.gradle:
includeBuild '../A'
之后就完美运行了。
关于Java Gradle Composite 构建无法解决问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46215977/