Code polish. Fixed issue with publshing sha 256/512 checksums (incompatible with sonatype at the moment)
This commit is contained in:
parent
0b98df2e69
commit
72ca7da686
|
@ -29,7 +29,7 @@ plugins {
|
|||
|
||||
id("com.dorkbox.Licensing") version "1.3"
|
||||
id("com.dorkbox.VersionUpdate") version "1.6.1"
|
||||
id("com.dorkbox.GradleUtils") version "1.5"
|
||||
id("com.dorkbox.GradleUtils") version "1.6"
|
||||
|
||||
kotlin("jvm") version "1.3.72"
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ object Extras {
|
|||
// set for the project
|
||||
const val description = "Gradle Plugin to publish projects to the sonatype repository"
|
||||
const val group = "com.dorkbox"
|
||||
const val version = "1.0"
|
||||
const val version = "1.1"
|
||||
|
||||
// set as project.ext
|
||||
const val name = "Gradle Publish"
|
||||
|
|
|
@ -15,22 +15,13 @@
|
|||
*/
|
||||
package dorkbox.gradlePublish
|
||||
|
||||
import de.marcphilipp.gradle.nexus.NexusPublishExtension
|
||||
import de.marcphilipp.gradle.nexus.NexusRepository
|
||||
import de.marcphilipp.gradle.nexus.NexusRepositoryContainer
|
||||
import dorkbox.gradle.sourceSets
|
||||
import org.gradle.api.*
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.gradle.api.publish.maven.tasks.PublishToMavenLocal
|
||||
import org.gradle.api.publish.maven.tasks.PublishToMavenRepository
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.gradle.api.services.BuildService
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
import org.gradle.jvm.tasks.Jar
|
||||
import java.io.File
|
||||
|
||||
open class
|
||||
PublishAndReleaseProjectTask : DefaultTask() {
|
||||
// private lateinit var mavenPublication: MavenPublication
|
||||
|
||||
init {
|
||||
outputs.upToDateWhen { false }
|
||||
outputs.cacheIf { false }
|
||||
|
@ -39,108 +30,9 @@ PublishAndReleaseProjectTask : DefaultTask() {
|
|||
|
||||
@TaskAction
|
||||
fun run() {
|
||||
// have to get the configuration extension data
|
||||
// val config = project.extensions.getByName("publishToSonatype") as PublishToSonatype
|
||||
//
|
||||
// if (!config.isValid()) {
|
||||
// throw GradleException("publish configuration data is incomplete.")
|
||||
// }
|
||||
|
||||
println("Publishing and releasing project to sonatype!")
|
||||
|
||||
///////////////////////////////
|
||||
////// PUBLISH TO SONATYPE / MAVEN CENTRAL
|
||||
//////
|
||||
////// TESTING (local maven repo) -> "PUBLISHING" -> publishToMavenLocal
|
||||
//////
|
||||
////// RELEASE (sonatype / maven central) -> "PUBLISHING" -> publishToSonaytypeAndRelease
|
||||
///////////////////////////////
|
||||
// publishing {
|
||||
// publications { pub ->
|
||||
// pub.create("maven", MavenPublication::class.java) { mavPub ->
|
||||
// mavPub.groupId = config.groupId
|
||||
// mavPub.artifactId = config.artifactId
|
||||
// mavPub.version = config.version
|
||||
//
|
||||
// mavPub.pom { pom ->
|
||||
// pom.name.set(config.name)
|
||||
// pom.description.set(config.description)
|
||||
// pom.url.set(config.url)
|
||||
//
|
||||
//
|
||||
// pom.issueManagement {
|
||||
// it.url.set("${config.issueManagement.url}/issues")
|
||||
// it.system.set(config.issueManagement.nickname)
|
||||
// }
|
||||
//
|
||||
// pom.organization {
|
||||
// it.name.set(config.vendor)
|
||||
// it.url.set(config.vendorUrl)
|
||||
// }
|
||||
//
|
||||
// pom.developers {
|
||||
// it.developer { dev ->
|
||||
// dev.id.set(config.developer.id)
|
||||
// dev.name.set(config.developer.name)
|
||||
// dev.email.set(config.developer.email)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// pom.scm {
|
||||
// it.url.set(config.url)
|
||||
// it.connection.set("scm:${config.url}.git")
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// // output the release URL in the console
|
||||
// project.tasks.getByName("releaseRepository").doLast {
|
||||
// val url = "https://oss.sonatype.org/content/repositories/releases/"
|
||||
// val projectName = config.groupId.replace('.', '/')
|
||||
//
|
||||
// println("Maven URL: $url$projectName/${config.name}/${config.version}/")
|
||||
// }
|
||||
//
|
||||
// project.nexusStaging {
|
||||
// username = config.sonatype.userName
|
||||
// password = config.sonatype.password
|
||||
// }
|
||||
//
|
||||
// val pub = (project as org.gradle.api.plugins.ExtensionAware).extensions.getByName("publishing") as NexusPublishExtension
|
||||
// pub.apply {
|
||||
// packageGroup.set(config.groupId)
|
||||
//
|
||||
// repositories(Action<NexusRepositoryContainer> {
|
||||
// it.sonatype(Action<NexusRepository> {repo ->
|
||||
// repo.username.set(config.sonatype.userName)
|
||||
// repo.password.set(config.sonatype.password)
|
||||
// })
|
||||
// })
|
||||
// }
|
||||
//
|
||||
// project.signing {
|
||||
// useInMemoryPgpKeys(File(config.privateKey.fileName).readText(), config.privateKey.password)
|
||||
// sign(project.publishing.publications.getByName("maven"))
|
||||
// }
|
||||
}
|
||||
|
||||
// private val Project.publishing: org.gradle.api.publish.PublishingExtension get() =
|
||||
// (this as org.gradle.api.plugins.ExtensionAware).extensions.getByName("publishing") as org.gradle.api.publish.PublishingExtension
|
||||
|
||||
// private fun Project.publishing(configure: org.gradle.api.publish.PublishingExtension.() -> Unit): Unit =
|
||||
// (this as org.gradle.api.plugins.ExtensionAware).extensions.configure("publishing", configure)
|
||||
|
||||
// private inline fun <reified S : Any> DomainObjectCollection<in S>.withType(noinline configuration: S.() -> Unit) =
|
||||
// withType(S::class.java, configuration)
|
||||
//
|
||||
// private fun Project.nexusStaging(configure: io.codearte.gradle.nexus.NexusStagingExtension.() -> Unit): Unit =
|
||||
// (this as org.gradle.api.plugins.ExtensionAware).extensions.configure("nexusStaging", configure)
|
||||
//
|
||||
// private fun Project.nexusPublishing(configure: NexusPublishExtension.() -> Unit): Unit =
|
||||
// (this as org.gradle.api.plugins.ExtensionAware).extensions.configure("nexusPublishing", configure)
|
||||
//
|
||||
// private fun Project.signing(configure: org.gradle.plugins.signing.SigningExtension.() -> Unit): Unit =
|
||||
// (this as org.gradle.api.plugins.ExtensionAware).extensions.configure("signing", configure)
|
||||
override fun getRequiredServices(): MutableSet<Provider<out BuildService<*>>> {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,6 +37,14 @@ import org.gradle.jvm.tasks.Jar
|
|||
*/
|
||||
@Suppress("UnstableApiUsage", "unused")
|
||||
class PublishPlugin : Plugin<Project> {
|
||||
companion object {
|
||||
init {
|
||||
// To fix maven+gradle moronic incompatibilities: https://github.com/gradle/gradle/issues/11308
|
||||
System.setProperty("org.gradle.internal.publish.checksums.insecure", "true")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private lateinit var project: Project
|
||||
|
||||
override fun apply(project: Project) {
|
||||
|
@ -97,11 +105,15 @@ class PublishPlugin : Plugin<Project> {
|
|||
|
||||
project.tasks.getByName("closeAndReleaseRepository").mustRunAfter(project.tasks.getByName("publishToSonatype"))
|
||||
project.tasks.create("publishToSonatypeAndRelease", PublishAndReleaseProjectTask::class.java).apply {
|
||||
group = "publishing"
|
||||
group = "publish and release"
|
||||
|
||||
dependsOn("publishToSonatype", "closeAndReleaseRepository")
|
||||
}
|
||||
|
||||
project.tasks.getByName("publishToMavenLocal").apply {
|
||||
group = "publish and release"
|
||||
}
|
||||
|
||||
|
||||
project.tasks.withType<PublishToMavenLocal> {
|
||||
onlyIf {
|
||||
|
|
Loading…
Reference in New Issue