Ich benutze Gradle und ich möchte eine .jar
mit Quelldateien erstellen, wenn Sie eine publishToMavenLocal
tun. Ich habe das bekam leicht zu arbeiten:Gradle Publishing Jar mit Quelldateien und Abhängigkeiten in POM
task jarWithSources(type: Jar) {
from sourceSets.main.output
if (gradle.startParameter.taskNames.any{it == "publishToMavenLocal"}) {
from sourceSets.main.allJava
}
}
publishing {
publications {
// publish the data_deposit jar as a standalone artifact
mavenJar(MavenPublication) {
artifact jarWithSources
artifactId "${jar.baseName}_jar"
version project.version
}
}
repositories {
maven { ... }
}
}
jedoch die pom.xml
wird die Abhängigkeiten fehlen.
Wenn ich dies:
publishing {
publications {
// publish the data_deposit jar as a standalone artifact
mavenJar(MavenPublication) {
// artifact jarWithSources // Stopped using this
from components.java // Have added this
artifactId "${jar.baseName}_jar"
version project.version
}
}
repositories {
maven { ... }
}
}
Wo dies nur ist, dass eine Änderung in der MavenPublication
, dann bekomme ich die volle pom.xml
aber keine Quelle natürlich. Ich kann keinen Weg finden, sowohl artifact jarWithSources
als auch from components.java
einzuschließen. Der Fehler ist:
Invalid publication 'mavenJar': multiple artifacts with the identical extension and classifier ('jar', 'null').
Was bedeutet, dass from components.java
auch von type: Jar
ist.
Kann jemand beraten, wie ich all das zur Arbeit bekommen kann?
Nun, um diese Frage zu beenden, muss ich sagen, dass Gradle
eine sehr sehr sehr steile Lernkurve hat. Es ist eine Computersprache (DSL), also muss deterministisch sein, obwohl ich mich manchmal frage. Ich habe nicht das Wissen zu verstehen, wie (zum Beispiel) from components.java
funktioniert (# 1). Für so viel Dokumentation wie es gibt (wie http://www.gradle.org/docs/current/userguide/publishing_maven.html und das DSL-Handbuch), ist es nicht sehr klar. Ich denke, die Dokumentation könnte viel reicher sein. Und es muss ein Kapitel über "es bekommen" geben. Es gibt einen Paradigmenwechsel, den man zu verstehen scheint!
# 1 - so gut ich verstehe das gibt Ihnen, was bei http://www.gradle.org/docs/nightly/userguide/java_plugin.html#sec:java_plugin_and_dependency_management ist, aber wie funktioniert das mit einem from
und im Zusammenhang mit einem MavenPublication
?
"eine sehr sehr sehr steile Lernkurve" würde ich ein paar sehr selbst hinzufügen.Zu viel Magie und schlechte Benennung – mhstnsc
haben das gleiche Problem über verschleierte Gläser – mhstnsc