我有一个多项目 gradle 构建,并且我已将该maven-publish
插件应用于subprojects
我的主构建文件中的所有内容。
我还在那里定义了一个名为mavenJava
.
这一切都很好,现在当我运行时,我./gradlew artifactoryPublish
从所有子项目中部署工件。
但是,我想将我的两个子项目排除在发布此mavenJava
出版物之外。
我已经尝试了很多事情,例如在我的主构建文件的块中的块中定义一个布尔skipDefaultPublish
值ext
(发布它。这不起作用,gradle 抱怨它。subprojects
ext
Cannot configure the 'publishing' extension after it has been accessed.
我尝试了其他的东西,但似乎没有任何效果。
我知道唯一可行的是在所有子项目中定义默认发布块,除了我不想发布的那些,但我有大约 20 个子项目,但只有两个不应该发布这种类型的工件,所以这不会这似乎不是最好的选择。
那么有什么方法可以配置所有子项目以发布工件,但仅在两个子项目中覆盖它,以便他们不这样做?
更新
试图澄清我的项目是什么样的。
根构建.gradle
subprojects {
apply plugin: 'maven-publish'
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
artifactId = getCustomProjectId()
groupId = 'com.our.group.id'
}
}
}
apply plugin: "com.jfrog.artifactory"
artifactory {
contextUrl = ourContextUrl
publish {
repository {
repoKey = "ourRepoKey"
username = "ourArtifactoryUser"
password = "ourArtifactoryPass"
}
defaults {
publications('mavenJava')
publishArtifacts = true
publishPom = true
}
}
}
}
在一个应该发布工件的子项目中,而不是默认的:
project(':exsub'){
publishing {
publications {
mavenSrc(MavenPublication) {
groupId "com.our.group.id"
artifactId "stuff-src"
artifact srcStuff
}
}
}
artifactoryPublish {
// publications.removeAll() //<- putting this here doesn't work
// publications.remove('mavenJava') //<- neither does this
publications ('mavenSrc') //<- this adds mavenSrc to the publication list but does not remove the mavenJava publication from it
}
}