如何将 gradle 'compile project' 依赖项添加到已发布的 *.pom?
How to add gradle 'compile project' dependencies to published *.pom?
我有一个像这样的分层 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.
的依赖
在广泛搜索答案并浪费了几个小时之后,我终于找到了解决方案。问题似乎是 gradle 中的执行顺序。在我的依赖被写入*.pom文件的时候,子项目之间的依赖还没有解决
事实证明,修复非常简单。我需要做的就是替换这个:
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
groupId project.group
artifactId jar.baseName
version project.version
}
}
}
...有了这个(注意包装):
afterEvaluate { project ->
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
groupId project.group
artifactId jar.baseName
version project.version
}
}
}
}
afterEvaluate
块强制 gradle 等待内容,直到子项目依赖关系得到解决,从而生成正确的 *.pom 文件。
有关 gradle 构建生命周期和 afterEvaluate
的更多详细信息,请参阅 gradle documentation。
我有一个像这样的分层 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.
在广泛搜索答案并浪费了几个小时之后,我终于找到了解决方案。问题似乎是 gradle 中的执行顺序。在我的依赖被写入*.pom文件的时候,子项目之间的依赖还没有解决
事实证明,修复非常简单。我需要做的就是替换这个:
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
groupId project.group
artifactId jar.baseName
version project.version
}
}
}
...有了这个(注意包装):
afterEvaluate { project ->
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
groupId project.group
artifactId jar.baseName
version project.version
}
}
}
}
afterEvaluate
块强制 gradle 等待内容,直到子项目依赖关系得到解决,从而生成正确的 *.pom 文件。
有关 gradle 构建生命周期和 afterEvaluate
的更多详细信息,请参阅 gradle documentation。