У меня есть пример здесь, к сожалению, он написан на Groovy, и я еще не знаком с Kotlin, как это сделать.
Может быть, это все еще помогает: https://github.com/thokari/gradle-workshop/blob/master/examples/09-multiple-artifacts/build.gradle
Наиболее важная часть, вероятно,this:
outputArchives.each { outputArchive ->
String logicalName = outputArchive.camelCase()
// Add archiving tasks.
// These could be anything with type AbstractArchiveTask (e.g. War, Zip).
task("${logicalName}Jar", type: Jar) { from configurations."${logicalName}Compile" }
task("${logicalName}SourceJar", type: Jar) { from sourceSets."${logicalName}".java }
// Configure the publishing extension added by the 'maven-publish' plugin.
// For every combination of publication and repository, a task with name
// publish<publicationName>PublicationTo<repositoryName>Repository is created.
// The task 'publish' is a shortcut, depending on each one of them.
publishing {
publications {
// Create a publication by calling its name and type.
"${logicalName}"(MavenPublication) {
// Override the artifact id, which defaults to the project name.
artifactId = outputArchive.dashSeparated()
// Publish the artifacts created by the archiving tasks.
artifact tasks."${logicalName}Jar"
artifact(tasks."${logicalName}SourceJar") { classifier 'source' }
}
}
}
}
Я также никогда не понимал, как использовать эту концепцию SoftwareComponent
.Я решил это, вызвав метод artifact
для задач архивации, которые я создал, вместо использования from(component)
, я думаю, что это можно сделать и в Kotlin.