@@ -13,34 +13,37 @@ import org.gradle.api.publish.maven.MavenPom
1313import org.gradle.api.publish.maven.MavenPublication
1414import org.gradle.api.publish.maven.tasks.PublishToMavenRepository
1515import org.gradle.api.tasks.bundling.Jar
16+ import xyz.block.gradle.artifactVersion
1617import xyz.block.gradle.isAndroid
1718import xyz.block.gradle.isKotlin
18- import xyz.block.gradle.sandbagVersion
19- import xyz.block.gradle.toSandbagArtifact
19+ import xyz.block.gradle.services.services
20+ import xyz.block.gradle.toProjectArtifactName
2021
2122/* *
22- * Artifact Swap project publish plugin for sandbags. This plugin is responsible for configuring
23- * Maven publishing with sandbag-specific settings when sandbag publishing is enabled.
24- *
25- * This plugin extracts the sandbag publishing logic from PublishPlugin and AndroidLibJavaPlugin
26- * to centralize artifact swap publishing concerns.
23+ * Artifact Swap project publish plugin for project artifacts. This plugin is responsible for
24+ * configuring Maven publishing with artifact-swap-specific settings when artifact publishing is
25+ * enabled.
2726 *
2827 * For reference and searchability, the ID of this plugin is `xyz.block.artifactswap.publish`.
2928 */
3029@Suppress(" unused" )
3130class ArtifactSwapProjectPublishPlugin : Plugin <Project > {
3231
32+ private lateinit var configService: ArtifactSwapConfigService
33+
3334 override fun apply (target : Project ): Unit = target.run {
34- val version = sandbagVersion ? : return @run
35+ val version = artifactVersion ? : return @run
36+
37+ configService = gradle.services.artifactSwapConfigService
3538
3639 pluginManager.apply (" maven-publish" )
3740 extensions.getByType(PublishingExtension ::class .java).also { mavenPublishing ->
38- val repo = configureSandbagRepository (mavenPublishing)
41+ val repo = configureArtifactRepository (mavenPublishing)
3942
40- // Other plugins configure the components to be published, so we have to configure them after
41- // those plugins run
43+ // Other plugins configure the components to be published, so we have to configure them
44+ // after those plugins run
4245 afterEvaluate {
43- val publication = configureSandbagPublication (mavenPublishing, version)
46+ val publication = configureArtifactPublication (mavenPublishing, version)
4447 createPublishAliasTask(repo, publication)
4548 }
4649 }
@@ -50,33 +53,35 @@ class ArtifactSwapProjectPublishPlugin : Plugin<Project> {
5053 }
5154 }
5255
53- private fun Project.configureSandbagRepository (
56+ private fun Project.configureArtifactRepository (
5457 mavenPublishing : PublishingExtension ,
55- ): MavenArtifactRepository = with (mavenPublishing) {
56- val sandbagsUrl = providers.gradleProperty(" square.sandbagsUrl" ).get()
57- return repositories.maven { repo ->
58- repo.name = " artifactSwap"
59- repo.url = uri(sandbagsUrl)
60-
61- getSandbagCredentials()?.apply {
62- repo.credentials(PasswordCredentials ::class .java) { creds ->
63- creds.username = username
64- creds.password = password
58+ ): MavenArtifactRepository =
59+ with (mavenPublishing) {
60+ val repoUrl = configService.parameters.repoUrl.get()
61+ return repositories.maven { repo ->
62+ repo.name = " artifactSwap"
63+ repo.url = uri(repoUrl)
64+
65+ val username = configService.parameters.repoUsername.orNull
66+ val password = configService.parameters.repoPassword.orNull
67+ if (username != null && password != null ) {
68+ repo.credentials(PasswordCredentials ::class .java) { creds ->
69+ creds.username = username
70+ creds.password = password
71+ }
6572 }
6673 }
6774 }
68- }
6975
70- private fun Project.configureSandbagPublication (
76+ private fun Project.configureArtifactPublication (
7177 mavenPublishing : PublishingExtension ,
7278 version : String
7379 ): MavenPublication {
74- val publication = mavenPublishing.publications
75- .maybeCreate(" projectArtifact" , MavenPublication ::class .java)
80+ val publication = mavenPublishing.publications.maybeCreate(" projectArtifact" , MavenPublication ::class .java)
7681
77- // Automatically configure maven coordinates for sandbag
82+ // Automatically configure maven coordinates for artifact
7883 publication.groupId = ARTIFACT_SWAP_MAVEN_GROUP
79- publication.artifactId = path.toSandbagArtifact
84+ publication.artifactId = path.toProjectArtifactName
8085 publication.version = version
8186
8287 // For non-Android projects, automatically configure the java component and sources
@@ -85,7 +90,7 @@ class ArtifactSwapProjectPublishPlugin : Plugin<Project> {
8590 addSourcesArtifact(publication)
8691 }
8792
88- configureSandbagPom (publication.pom)
93+ configureArtifactPom (publication.pom)
8994
9095 return publication
9196 }
@@ -113,26 +118,11 @@ class ArtifactSwapProjectPublishPlugin : Plugin<Project> {
113118 }
114119 }
115120
116- private fun Project.configureSandbagPom (pom : MavenPom ) {
121+ private fun Project.configureArtifactPom (pom : MavenPom ) {
117122 with (pom) {
118123 name.set(project.name)
119- description.set(" Sandbag for ${project.name} in build ${project.isolated.rootProject.name} " )
120- url.set(providers.gradleProperty(" square.repoUrl" ))
121- scm { scm ->
122- scm.connection.set(providers.gradleProperty(" square.scmConnectionUrl" ))
123- scm.developerConnection.set(providers.gradleProperty(" square.scmDeveloperConnectionUrl" ))
124- scm.url.set(providers.gradleProperty(" square.repoUrl" ))
125- }
126- }
127- }
128-
129- private fun Project.getSandbagCredentials (): SandbagCredentials ? {
130- val username = providers.gradleProperty(" square.artifactory.username" ).orNull
131- val password = providers.gradleProperty(" square.artifactory.password" ).orNull
132- return if (username != null && password != null ) {
133- SandbagCredentials (username, password)
134- } else {
135- null
124+ description.set(" Artifact for ${project.name} in build ${project.isolated.rootProject.name} " )
125+ url.set(configService.parameters.repoUrl)
136126 }
137127 }
138128
@@ -145,9 +135,4 @@ class ArtifactSwapProjectPublishPlugin : Plugin<Project> {
145135 it.dependsOn(tasks.named(publishTaskName))
146136 }
147137 }
148-
149- private data class SandbagCredentials (
150- val username : String ,
151- val password : String
152- )
153138}
0 commit comments