我的项目布局是这样的
A
├── B
│ ├── build.gradle
│ └── Example-0.0.1.jar
├── build.gradle
├── C
│ ├── build.gradle
│ └── src
│ └── main
│ └── java
│ └── com
│ └── sample
│ └── Hello.java
└── settings.gradle
现在,B使用maven发布将Example-0.0.1.jar发布到本地maven档案(即~/.m2/存储库)
C是一个java项目。Hello.java文件使用Example jar文件。
我正在使用2.2级来构建这个项目。我有
$ cat A/build.gradle
allprojects {
repositories {
mavenCentral()
mavenLocal()
}
}
和
$ cat A/settings.gradle
include ':B'
include ':C'
和
$ cat A/B/build.gradle
apply plugin: 'maven-publish'
publishing {
publications {
maven(MavenPublication) {
groupId 'com.example'
artifactId 'abc'
version '0.0.1'
artifact 'Example-0.0.1.jar'
}
}
}
和
$ cat A/C/build.gradle
apply plugin: 'java'
apply plugin: 'maven'
dependencies {
compile project(':B')
compile 'com.example:abc:0.0.1'
}
现在,每当我运行任何gradle命令时,我都会得到以下错误:
$ gradle tasks
Execution failed for task ':tasks'.
> Could not determine the dependencies of task ':C:compileJava'.
有没有任何方法可以让任务B:publishToMavenLocal在构建C之前运行,以便包含jar?
我也遇到了同样的问题。找到了实现这一目标的方法。我在父build.gradle文件中添加了以下内容,现在一切都按预期进行。
项目(':project-B').tasks.compileJava.dependsOn项目(':project-A').ttasks.install
所以现在,当我执行构建时,项目A的工件被安装到本地存储库中,然后项目B能够从那里获取它们。祝你好运