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发布将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能够从那里获取它们。祝你好运

最新更新