У меня многопроектная сборка Gradle, и я применил плагин maven-publish
ко всем subprojects
в моем файле основной сборки.
Я также определил публикацию по умолчанию, которая называется mavenJava
.
Все нормально, и теперь, когда я запускаю ./gradlew artifactoryPublish
, я развертываю артефакты из всех подпроектов.
Однако я бы хотел исключить два моих подпроекта из публикации этой публикации mavenJava
.
Я пробовал несколько вещей, таких как определение логического значения (skipDefaultPublish
) в блоке ext
в блоке subprojects
в моем файле основной сборки и включение определения публикации в условный блок if и перезапись эта переменная в блоке ext
подпроектов я не хочу публиковать. Это не работает, и Gradle жалуется, что это Cannot configure the 'publishing' extension after it has been accessed.
.
Я пробовал другие вещи, но, похоже, ничего не работает.
Единственное, что я знаю, сработает, это определение блока публикации по умолчанию во всех подпроектах, кроме тех, из которых я не хочу публиковать, но у меня есть ~ 20 подпроектов, но только два, которые не должны публиковать этот тип артефакта так что это не лучшая вещь.
Так есть ли способ настроить все подпроекты на публикацию артефакта, но переопределить его только в двух подпроектах, чтобы они этого не делали?
UPDATE
Чтобы попытаться уточнить, как выглядит мой проект.
root build.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
}
}