您可以通过将相同的发布配置注入每个子项目来减少详细的发布声明。例如,对于具有以下结构的多重构建项目:
ROOT
│ build.gradle
│ settings.gradle
├───subA
│ build.gradle
│
├───subB
│ build.gradle
│
└───subC
build.gradle
在你的根中build.gradle
, 你可以做:
apply plugin:'maven-publish'
subprojects{
publishing {
publications {
"$project.name"(MavenPublication) {
groupId project.group
artifactId project.name
version project.version
from components.java
}
}
}
}
每个子项目定义自己的 groupid 和版本,如下所示:
group = 'org.test.sample.A'
version = '1.0'
artifactId 是从子项目名称中获取的。跑步gradle publish
生成此结构的存储库:
org
└───test
└───sample
├───A
│ └───subA
│ └───1.0
│ subA-1.0.jar
│ subA-1.0.pom
├───B
│ └───subB
│ └───1.0
│ subB-1.0.jar
│ subB-1.0.pom
└───C
└───subC
└───1.0
subC-1.0.jar
subC-1.0.pom
依赖关系
此配置还会自动处理依赖关系。例如如果在子项目中subA
你有过:
dependencies{
compile project(':subB')
}
由于我正在使用from components.java
代替artifact
,插件知道寻找依赖项并生成一个 pomsubA
包括了:
<dependencies>
<dependency>
<groupId>org.gradle.sample.B</groupId>
<artifactId>subB</artifactId>
<version>1.0</version>
<scope>runtime</scope>
</dependency>
</dependencies>