我有一个像这样的分层gradle 2.4项目:
Root
|- subProject1
|- subProject2
|- subProject3
对于每个子项目,我想发布 .jar 文件和 .pom 文件,并将它们存储在maven存储库中。所有常规compile('com.example:awesome-lib')
命令都在* .pom文件中正确导出。
我们假设subProject2
中有compile project(':subProject1')
个依赖关系。此依赖关系不会包含在生成的* .pom文件中。
我的gradle发布结构如下所示:
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
groupId project.group
artifactId jar.baseName
version project.version
}
}
}
......我做错了什么?为什么我的compile project
依赖项不会导出到* .pom文件中?有没有解决方法?为了澄清,我在上面的例子中期望的结果是subProject2.pom声明了对subProject1.jar的依赖。
答案 0 :(得分:0)
在广泛搜索答案后,浪费了几个小时,我终于找到了解决方案。问题似乎是gradle中的执行顺序。当我的依赖项被写入* .pom文件时,子项目之间的依赖关系尚未解决。
修复结果非常简单。我需要做的就是替换它:
afterEvaluate { project ->
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
groupId project.group
artifactId jar.baseName
version project.version
}
}
}
}
...用这个(注意包装器):
afterEvaluate
afterEvaluate
阻止gradle等待内容,直到子项目依赖关系得到解决,从而产生正确的* .pom文件。