Gradle:将子模块的发布任务添加为另一个子模块的依赖项

时间:2015-03-19 11:33:19

标签: maven gradle build.gradle

我的项目布局就像这样

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-publish将Example-0.0.1.jar发布到本地maven档案(即〜/ .m2 / repositories)

C是一个java项目。 Hello.java文件使用Example jar文件。

我正在使用gradle 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'.

有没有任何方法可以在构建C之前运行任务B:publishToMavenLocal以包含jar?

1 个答案:

答案 0 :(得分:0)

我也遇到了同样的问题。 找出实现此目的的方法。我在父build.gradle文件中添加了以下内容,现在一切正常。

  

project(':project-B')。tasks.compileJava.dependsOn project(':project-A')。tasks.install

所以现在当我执行构建时,将Project-A的工件安装到本地存储库,然后Project-B可以从那里获取它们。祝你好运!