Wie kann ein Plugin programmgesteuert das Publizieren von Maven-Publish konfigurieren und es build.gradle erlauben, es zu ändern?
Ich habe projektweite Einstellungen in einem Plugin namens parent, das versucht, das Maven-Publish-Plugin anzuwenden und dann die Publishing-Erweiterung programmgesteuert zu konfigurieren. Dies scheint zu funktionieren, aber wenn ich dieses Plugin in einem build.gradle-Skript anwende, kann ich die Veröffentlichungserweiterung nicht so konfigurieren, dass die projektspezifischen Veröffentlichungen festgelegt werden.
Ich erhalte den Fehler:
Cannot configure the 'publishing' extension after it has been accessed.
Meine Absicht war es, das Veröffentlichungs-Repository im übergeordneten Plugin einzurichten und dann jedes build.gradle-Skript die entsprechenden Veröffentlichungen hinzufügen zu lassen.
Gibt es eine Möglichkeit, dies zu tun?
Derzeit sieht ParentPlugin.groovy folgendermaßen aus:
def void apply(Project project) {
project.getProject().apply plugin: 'maven-publish'
def publishingExtension = project.extensions.findByName('publishing')
publishingExtension.with {
repositories {
maven {
mavenLocal()
credentials {
username getPropertyWithDefault(project.getProject(), 'publishUserName', 'dummy')
password getPropertyWithDefault(project.getProject(), 'publishPassword', 'dummy')
}
}
}
}
}
Mein Client build.gradle schlägt fehl, wenn er versucht, die Veröffentlichungserweiterung zu konfigurieren.
apply plugin: 'parent'
publishing {
publications {
mavenJava(MavenPublication) {
groupId 'agroup'
artifactId 'anartifactid'
version '1.0.0-SNAPSHOT'
from components.java
}
}
}
Ist das möglich? Gibt es einen anderen Weg, wie ich das angehen sollte?