Мне бы очень хотелось по достоинству оценить Gradle 5, особенно в сочетании с новым Kotlin DSL, но мне очень тяжело получить (на мой взгляд) очень, очень простую и распространенную сборку, работающую с Gradle.
Задача
Выпуск библиотеки Java с несколькими взаимозависимыми подмодулями в макете каталога Maven по умолчанию в качестве высококачественных артефактов / хранилища Maven в простой простой сборке Gradle (т.е. DRY ).
Поэтому: создайте корневой проект в качестве зонтика, который определяет и содержит все общие конфигурации (практически все, кроме реальнойзависимости).
Моя текущая борьба
Я перенес свои текущие "результаты" в пример проекта на Github и уже задавал этот вопрос на форуме Gradle .
В настоящее время я не могу объявить необходимую задачу для обеспечения стандартных -sources
и -javadoc
артефактов в моей центральной сборке.
Например, этитри "солуtions », которые вы найдете при поиске решений на базе Kotlin DSL все не (больше) не работают в многомодульном сценарии:
Неполное решение (/build.gradle.kts
)
Полный пример см. На Github: https://github.com/bentolor/gradle-maven-multimodule-kotlindsl
subprojects {
apply(plugin = "java-library")
apply(plugin = "maven-publish")
group = "de.bentolor.sampleproject"
version = "0.1.0"
repositories {
jcenter()
}
dependencies {
// Dependencies used in EVERY module
"compile"("commons-logging:commons-logging:1.2")
"testImplementation"("junit:junit:4.12")
}
tasks {
// not working
/*register("sourcesJar", Jar::class.java) {
from(sourceSets.main.get().allJava)
classifier = "sources"
}*/
// not working, eiher
/* task<Jar>("sourcesJar") {
from(sourceSets.main.get().allJava)
classifier = "sources"
} */
}
configure<JavaPluginExtension> {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
configure<PublishingExtension> {
publications {
create<MavenPublication>(project.name) {
from(components["java"])
// won't work, beause inaccessible declaration in `tasks{}`-Block
//add("archives", javadocJar)
//add("archives", sourcesJar)
}
}
repositories {
mavenLocal()
}
}
}
Пример субмодуля /module2/build.gradle.kts
group = "de.bentolor.sampleproject.module2"
dependencies {
compile(project(":module1"))
}