Ich habe projektweite Einstellungen in einem Plugin namens parent, das versucht, das maven-publish-Plugin anzuwenden und anschließend die Veröffentlichungs-Erweiterung programmatisch zu konfigurieren. Dies scheint zu funktionieren, aber wenn ich dieses Plugin in einem build.gradle-Skript anwende, kann ich die Veröffentlichungserweiterung nicht konfigurieren, um die projektspezifischen Veröffentlichungen festzulegen.Wie kann man maven-publish publishing programmatisch konfigurieren und build.gradle erlauben, es zu ändern?
erhalte ich die Fehlermeldung:
Cannot configure the 'publishing' extension after it has been accessed.
Meine Absicht, das Verlags Repository in der übergeordneten Plugin einzurichten war und dann jedes build.gradle Skript lassen Sie die entsprechenden Publikationen hinzuzufügen.
Gibt es eine Möglichkeit, dies zu tun?
Derzeit ParentPlugin.groovy wie folgt aussieht:
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 Klient build.gradle schlägt fehl, wenn es die Veröffentlichung Erweiterung zu konfigurieren versucht.
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, auf den ich näher eingehen sollte?
vielen Dank das ist hilfreich. Ich hatte gehofft, es einfacher zu machen, für jedes Projekt zu bauen, so dass sie die Standard-Publishing-Erweiterung verwenden können. Gibt es eine Möglichkeit für mein Plugin, seine eigene benutzerdefinierte Publishing-Erweiterung verfügbar zu machen, mit der Projekte Publikationen definieren können? – ditkin
Sie haben mir gerade die Arbeit gerettet, dies selbst herauszufinden - sehr geschätzt! Hoffentlich werden Gradle Devs dies in den nächsten Revisionen behandeln. – Terence