Skip to content

Instantly share code, notes, and snippets.

@Impakt
Last active November 19, 2022 12:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Impakt/88f2a5a133cea5753571f88bd638bb0b to your computer and use it in GitHub Desktop.
Save Impakt/88f2a5a133cea5753571f88bd638bb0b to your computer and use it in GitHub Desktop.
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.UnknownDomainObjectException
import org.gradle.api.artifacts.repositories.MavenArtifactRepository
import org.gradle.api.component.SoftwareComponent
import org.gradle.api.publish.PublishingExtension
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin
/**
* Publishes to either snapshots or releases repo depending on whether the version ends with SNAPSHOT
*/
class PublishingPlugin implements Plugin<Project> {
@Override
void apply( Project project ) {
try {
project.components.named( 'java' )
} catch ( UnknownDomainObjectException ex ) {
return
}
project.getPluginManager().apply( MavenPublishPlugin.class )
project.getExtensions().configure( PublishingExtension.class, publishing -> {
publishing.publications( publications -> {
publications.create( 'mavenJava', MavenPublication.class, mavenJava -> {
project.components.named( 'java', SoftwareComponent.class, softwareComponent -> {
mavenJava.from( softwareComponent )
} )
} )
} )
publishing.repositories( repositories -> {
repositories.maven( maven -> {
MavenArtifactRepository releasesRepo = project.repositories.releases_repository
MavenArtifactRepository snapshotsRepo = project.repositories.snapshots_repository
MavenArtifactRepository repo = project.version.endsWith( 'SNAPSHOT' ) ? snapshotsRepo : releasesRepo
maven.setUrl( repo.url )
maven.credentials.username = repo.credentials.username
maven.credentials.password = repo.credentials.password
} )
} )
} )
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment