это мой код kotlin, который я копирую на каждый gradle.build.kts
System.getenv("JRS_S3_URI")?.let {
val sourcesJar by tasks.creating(Jar::class) {
classifier = "sources"
from(java.sourceSets["main"].allSource)
}
publishing {
repositories {
maven {
url = uri(it)
credentials(AwsCredentials::class.java) {
accessKey = System.getenv("JRS_ACCESSKEYID")
secretKey = System.getenv("JRS_SECRETACCESSKEY")
}
}
}
(publications) {
"mavenJava"(MavenPublication::class) {
from(components["java"])
artifact(sourcesJar)
}
}
}
}
это то, что я придумал до сих пор, плагин мудрый
public class Maven extends SourceSetConfiguredPlugin {
public Maven( XenoExtension extension ) {
super( extension );
}
@Override
public void apply( Project project ) {
if ( System.getenv( "JRS_S3_URI" ) != null ) {
project.getPluginManager().apply( MavenPublishPlugin.class );
TaskContainer tasks = project.getTasks();
Jar sourceSet = tasks.create( "sources", Jar.class, task -> {
getSourceSets().stream()
.map( SourceSet::getAllSource )
.map( sds -> project.copySpec().from( sds ) )
.forEach( copySpec -> task.include( copySpec.getIncludes() ) );
} );
tasks.withType( PublishToMavenRepository.class, task -> {
task.getRepository().setUrl( URI.create( System.getenv( "JRS_S3_URI" ) ) );
task.getRepository().credentials( AwsCredentials.class, creds -> {
creds.setAccessKey( System.getenv( "JRS_ACCESSKEYID" ) );
creds.setSecretKey( System.getenv( "JRS_SECRETACCESSKEY" ) );
} );
MavenPublication publication = task.getPublication();
publication.artifact( project.getComponents() );
publication.artifact( sourceSet );
} );
}
}
}
он компилируется, но, очевидно, не запускает исходный файл и двоичный файл в мой репозиторий при запуске. Как я могу исправить свой плагин так, чтобы он делал то же самое, что и мой код Kotlin?