Używam gradle i chcę utworzyć .jar
z plikami źródłowymi podczas wykonywania publishToMavenLocal
. Mam że łatwo pracować:gradle publikacji Jar z plikami źródłowymi i zależnościami w 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 { ... }
}
}
Jednak pom.xml
brakuje zależności.
Jeśli używam to:
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 { ... }
}
}
Gdzie to jest tylko jedna zmiana w MavenPublication
, następnie uzyskać pełną pom.xml
ale nie źródło oczywiście. Nie mogę znaleźć sposobu na uwzględnienie zarówno artifact jarWithSources
, jak i from components.java
. Błąd jest:
Invalid publication 'mavenJar': multiple artifacts with the identical extension and classifier ('jar', 'null').
sugerując, że from components.java
jest type: Jar
również.
Czy ktoś może doradzić, jak mogę to wszystko osiągnąć?
Teraz, aby zakończyć to pytanie, muszę powiedzieć, że Gradle
ma bardzo bardzo bardzo stromą krzywą uczenia się. Jest to język komputerowy (DSL), więc musi być deterministyczny, choć czasem się zastanawiam. Nie mam wiedzy, aby zrozumieć, jak działa (na przykład) from components.java
(# 1). Dla tyle dokumentacji, ile jest (np. http://www.gradle.org/docs/current/userguide/publishing_maven.html i przewodnika DSL), nie jest to bardzo jasne. Myślę, że dokumentacja mogłaby być o wiele bogatsza. I musi być rozdział o "zdobyciu". Istnieje pewna zmiana paradygmatu, która wydaje się potrzebna do zrozumienia!
# 1 - jak najlepiej rozumiem, daje to, co jest w http://www.gradle.org/docs/nightly/userguide/java_plugin.html#sec:java_plugin_and_dependency_management, ale jak to działa z from
i w kontekście MavenPublication
?
"bardzo bardzo bardzo stroma krzywa uczenia się" dodałbym kilka bardzo sam.Za dużo magii i zła nazwa – mhstnsc
mają ten sam problem z zaciemnionymi słojami. – mhstnsc