Code polish. Fixed issue with publshing sha 256/512 checksums (incompatible with sonatype at the moment)

This commit is contained in:
nathan 2020-06-02 22:44:56 +02:00
parent 0b98df2e69
commit 72ca7da686
3 changed files with 20 additions and 116 deletions

View File

@ -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"

View File

@ -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")
}
}

View File

@ -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 {