我正在尝试使用gradle发布两个子项目。我有两个子项目:SubprojectA依赖于SubprojectB。我想使用maven-publish来发布它们。我在build.gradle中有这个
plugins {
id 'java'
id 'maven-publish'
}
publishing {
publications {
SubprojectA(MavenPublication) {
println(project(':subprojectA').tasks)
groupId group
artifactId 'subjprojectA'
version version
artifact project(':subprojectA').tasks.getByName('jar')
}
SubprojectB(MavenPublication) {
groupId group
artifactId 'subjprojectB'
version version
artifact project(':subjprojectB').tasks.getByName('jar')
}
}
repositories {
maven {
url "http://some-url"
}
}
}
Gradle尝试按字母顺序发布它们:由于subprojectA依赖于subprojectB,因此它无效,因为subprojectB尚未发布。如果我将subprojectA重命名为ZSubprojectA,就像这样:
ZSubprojectA(MavenPublication) {
println(project(':subprojectA').tasks)
groupId group
artifactId 'subprojectA'
version version
artifact project(':subprojectA').tasks.getByName('jar')
}
然后它可以工作,但是我不喜欢这种解决方案。我已经尝试过这样的事情:
project(':subprojectA') {
publish.dependsOn(":subprojectB:build")
}
但是它不起作用,并且:subprojectB:publish不存在。
答案 0 :(得分:0)
我已经能够解决它。这是问题所在:
两个子项目都有各自的build.gradle文件。在subprojectA的build.gradle中,是这样的:
plugins {
id 'java'
}
sourceCompatibility = 1.8
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
implementation group: 'com.neovisionaries', name: 'nv-i18n', version: '1.22'
implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.1'
implementation group: 'com.myorg.something', name: 'subprojectB', version: '1.0.0-SNAPSHOT'
}
因此,它试图从我的组织专用存储库中获取subprojectB,我应该做这样的事情:
compile project(":subprojectB")
我应该在问题中同时包含两个build.gradle文件。但是问题解决了。