Я использую gradle, и я хочу создать .jar
с исходными файлами при выполнении publishToMavenLocal
. Я получил, что легко работать:gradle publish Jar с исходными файлами и зависимостями в 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 { ... }
}
}
Однако pom.xml
не хватает зависимостей.
Если я использую это:
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 { ... }
}
}
Где это только то, что одно изменение в MavenPublication
, то я получаю полный pom.xml
, но не источник, конечно. Я не могу найти способ включить как artifact jarWithSources
, так и from components.java
. Ошибка:
Invalid publication 'mavenJar': multiple artifacts with the identical extension and classifier ('jar', 'null').
Подразумевая, что from components.java
имеет type: Jar
также.
Может ли кто-нибудь посоветовать, как я могу заставить все это работать?
Теперь, чтобы закончить этот вопрос, я должен сказать, что Gradle
имеет очень очень крутую кривую обучения. Его компьютерный язык (DSL) должен быть детерминированным, хотя иногда мне интересно. У меня нет знаний, чтобы понять, как (например) from components.java
работ (# 1). Для такой документации, как есть (например, http://www.gradle.org/docs/current/userguide/publishing_maven.html и руководство DSL), это не очень понятно. Я думаю, что документация может быть намного богаче. И там должна быть глава о «получении». Существует некоторый сдвиг в парадигме, который, кажется, нужно понять!
# 1 - насколько я понимаю, это дает вам то, что находится на http://www.gradle.org/docs/nightly/userguide/java_plugin.html#sec:java_plugin_and_dependency_management, но как это работает с from
и в контексте MavenPublication
?
«очень очень крутая кривая обучения», я бы добавил несколько очень себя.Слишком много магии и плохого наименования – mhstnsc
имеют ту же проблему и с обфускационными баночками – mhstnsc