Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix release to maven central #1788

Merged
merged 15 commits into from
Nov 10, 2023
10 changes: 4 additions & 6 deletions .github/workflows/diktat_snapshot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,6 @@ jobs:
with:
gradle-version: wrapper
arguments: |
:diktat-api:publishToMavenLocal
:diktat-common:publishToMavenLocal
:diktat-ktlint-engine:publishToMavenLocal
:diktat-rules:publishToMavenLocal
:diktat-gradle-plugin:publishToMavenLocal
:generateLibsForDiktatSnapshot
-x detekt
-x test
Expand All @@ -59,7 +54,10 @@ jobs:
- name: 'Override <gradle/libs.versions.toml>'
run: |
mv gradle/libs.versions.toml gradle/libs.versions.toml_current
mv build/diktat-snapshot/libs.versions.toml_snapshot gradle/libs.versions.toml
mv build/diktat-snapshot/libs.versions.toml gradle/libs.versions.toml

mv gradle/plugins/src/main/kotlin/com/saveourtool/diktat/buildutils/diktat-convention-configuration.gradle.kts gradle/plugins/src/main/kotlin/com/saveourtool/diktat/buildutils/diktat-convention-configuration.gradle.kts_current
mv build/diktat-snapshot/diktat-convention-configuration.gradle.kts gradle/plugins/src/main/kotlin/com/saveourtool/diktat/buildutils/diktat-convention-configuration.gradle.kts

# copied from .github/workflows/diktat.yml
- uses: gradle/gradle-build-action@v2
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

![Build and test](https://github.com/saveourtool/diKTat/workflows/Build%20and%20test/badge.svg?branch=master)
![deteKT static analysis](https://github.com/saveourtool/diKTat/workflows/Run%20deteKT/badge.svg)
![diKTat code style](https://github.com/saveourtool/diKTat/workflows/Run%20diKTat%20from%20release%20version/badge.svg?branch=master)
![diKTat code style](https://github.com/saveourtool/diKTat/workflows/Run%20diKTat%20%28release%29/badge.svg?branch=master)
[![codecov](https://codecov.io/gh/saveourtool/diKTat/branch/master/graph/badge.svg)](https://codecov.io/gh/saveourtool/diKTat)

[![Releases](https://img.shields.io/github/v/release/saveourtool/diKTat)](https://github.com/saveourtool/diKTat/releases)
[![Maven Central](https://img.shields.io/maven-central/v/com.saveourtool.diktat/diktat-rules)](https://mvnrepository.com/artifact/com.saveourtool.diktat)
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fsaveourtool%2FdiKTat.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fsaveourtool%2FdiKTat?ref=badge_shield)
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fsaveourtool%2Fdiktat.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fsaveourtool%2Fdiktat?ref=badge_shield)
[![Chat on Telegram](https://img.shields.io/badge/Chat%20on-Telegram-brightgreen.svg)](https://t.me/diktat_help)

[![Hits-of-Code](https://hitsofcode.com/github/saveourtool/diktat)](https://hitsofcode.com/view/github/saveourtool/diktat)
Expand Down
19 changes: 17 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,13 @@ tasks.create("generateLibsForDiktatSnapshot") {
rootProject.project(":diktat-rules"),
rootProject.project(":diktat-gradle-plugin"),
)
mustRunAfter(dependencies.map { "${it.path}:publishToMavenLocal" })
dependsOn(dependencies.map { "${it.path}:publishToMavenLocal" })

val libsFile = rootProject.file("gradle/libs.versions.toml")
val diktatGradleFile = rootProject.file("gradle/plugins/src/main/kotlin/com/saveourtool/diktat/buildutils/diktat-convention-configuration.gradle.kts")

inputs.file(libsFile)
inputs.file(diktatGradleFile)
inputs.files(dependencies.map { it.pomFile() })
inputs.files(dependencies.map { it.artifactFile() })
inputs.property("project-version", version.toString())
Expand All @@ -61,10 +64,22 @@ tasks.create("generateLibsForDiktatSnapshot") {
}
}
.let {
val libsFileForDiktatSnapshot = dir.resolve("libs.versions.toml_snapshot")
val libsFileForDiktatSnapshot = dir.resolve("libs.versions.toml")
Files.write(libsFileForDiktatSnapshot.toPath(), it)
}

Files.readAllLines(diktatGradleFile.toPath())
.map { line ->
when {
line.contains("com.saveourtool.diktat.diktat-gradle-plugin") -> line.replace("com.saveourtool.diktat.diktat-gradle-plugin", "com.saveourtool.diktat")
else -> line
}
}
.let {
val diktatGradleFileForDiktatSnapshot = dir.resolve("diktat-convention-configuration.gradle.kts")
Files.write(diktatGradleFileForDiktatSnapshot.toPath(), it)
}

dependencies.forEach { dependency ->
val artifactDir = dir.pathToMavenArtifact(dependency)
.also { it.createDirectory() }
Expand Down
2 changes: 2 additions & 0 deletions diktat-cli/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import com.saveourtool.diktat.buildutils.configurePublications
import com.github.jengelman.gradle.plugins.shadow.ShadowExtension
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import org.jetbrains.kotlin.incremental.createDirectory
Expand Down Expand Up @@ -92,3 +93,4 @@ publishing {
}
}
}
configurePublications()
31 changes: 17 additions & 14 deletions diktat-gradle-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import com.saveourtool.diktat.buildutils.configurePom
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.getCurrentOperatingSystem
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
id("com.saveourtool.diktat.buildutils.kotlin-jvm-configuration")
id("com.saveourtool.diktat.buildutils.code-quality-convention")
id("com.saveourtool.diktat.buildutils.publishing-default-configuration")
id("com.saveourtool.diktat.buildutils.publishing-configuration")
id("pl.droidsonroids.jacoco.testkit") version "1.0.12"
id("org.gradle.test-retry") version "1.5.6"
id("com.gradle.plugin-publish") version "1.2.1"
Expand Down Expand Up @@ -38,14 +39,28 @@ tasks.withType<KotlinCompile> {
}

gradlePlugin {
website = "https://diktat.saveourtool.com/"
vcsUrl = "https://github.com/saveourtool/diktat"
plugins {
create("diktatPlugin") {
id = "com.saveourtool.diktat.diktat-gradle-plugin"
id = "com.saveourtool.diktat"
implementationClass = "com.saveourtool.diktat.plugin.gradle.DiktatGradlePlugin"
}
}
}

afterEvaluate {
publishing {
publications {
withType<MavenPublication> {
pom {
configurePom(project)
}
}
}
}
}

// === testing & code coverage, jacoco is run independent from maven
val functionalTestTask by tasks.register<Test>("functionalTest")
tasks.withType<Test> {
Expand Down Expand Up @@ -103,15 +118,3 @@ tasks.jacocoTestReport {
xml.required.set(true)
}
}

afterEvaluate {
tasks.named("javadocJar") {
enabled = false
}
tasks.named("generateMetadataFileForPluginMavenPublication") {
dependsOn(tasks.named("dokkaJar"))
}
tasks.named("generateMetadataFileForMavenPublication") {
dependsOn(tasks.named("dokkaJar"))
}
}
2 changes: 2 additions & 0 deletions diktat-maven-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import com.saveourtool.diktat.buildutils.configurePublications
import de.benediktritter.maven.plugin.development.task.GenerateHelpMojoSourcesTask
import de.benediktritter.maven.plugin.development.task.GenerateMavenPluginDescriptorTask

Expand Down Expand Up @@ -47,3 +48,4 @@ publishing {
}
}
}
configurePublications()
2 changes: 2 additions & 0 deletions diktat-ruleset/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import com.saveourtool.diktat.buildutils.configurePom
import com.saveourtool.diktat.buildutils.configurePublications
import com.github.jengelman.gradle.plugins.shadow.ShadowExtension
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

Expand Down Expand Up @@ -73,3 +74,4 @@ publishing {
}
}
}
configurePublications()
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ import org.jetbrains.dokka.gradle.DokkaPlugin
* Configures all aspects of the publishing process.
*/
fun Project.configurePublishing() {
configurePublications()
apply<MavenPublishPlugin>()
if (this == rootProject) {
configureNexusPublishing()
Expand Down Expand Up @@ -95,6 +94,36 @@ fun MavenPom.configurePom(project: Project) {
}
}

/**
* Configures all publications. The publications must already exist.
*/
@Suppress("TOO_LONG_FUNCTION")
fun Project.configurePublications() {
if (this == rootProject) {
return
}
val sourcesJar = tasks.named(SOURCES_JAR)
apply<DokkaPlugin>()
@Suppress("GENERIC_VARIABLE_WRONG_DECLARATION")
val dokkaJarProvider = tasks.register<Jar>("dokkaJar") {
group = "documentation"
archiveClassifier.set("javadoc")
from(tasks.named("dokkaHtml"))
}
configure<PublishingExtension> {
repositories {
mavenLocal()
}
publications.withType<MavenPublication>().configureEach {
artifact(sourcesJar)
artifact(dokkaJarProvider)
pom {
configurePom(project)
}
}
}
}

/**
* Configures Maven Central as the publish destination.
*/
Expand Down Expand Up @@ -157,34 +186,6 @@ private fun Project.configureGitHubPublishing() {
}
}

/**
* Configures all publications. The publications must already exist.
*/
@Suppress("TOO_LONG_FUNCTION")
private fun Project.configurePublications() {
if (this == rootProject) {
return
}
apply<DokkaPlugin>()
@Suppress("GENERIC_VARIABLE_WRONG_DECLARATION")
val dokkaJarProvider = tasks.register<Jar>("dokkaJar") {
group = "documentation"
archiveClassifier.set("javadoc")
from(tasks.named("dokkaHtml"))
}
configure<PublishingExtension> {
repositories {
mavenLocal()
}
publications.withType<MavenPublication>().configureEach {
artifact(dokkaJarProvider)
pom {
configurePom(project)
}
}
}
}

/**
* Enables signing of the artifacts if the `signingKey` project property is set.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/**
* Names for common tasks
*/

package com.saveourtool.diktat.buildutils

/**
* Tasks with sources
*/
const val SOURCES_JAR = "sourcesJar"
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
package com.saveourtool.diktat.buildutils

import org.ajoberstar.reckon.core.Scope
import org.ajoberstar.reckon.core.VersionTagParser
import org.ajoberstar.reckon.gradle.ReckonExtension
import org.ajoberstar.reckon.gradle.ReckonPlugin
import org.eclipse.jgit.api.Git
Expand All @@ -13,6 +14,7 @@ import org.eclipse.jgit.storage.file.FileRepositoryBuilder
import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure
import java.util.Optional

/**
* Configures reckon plugin for [this] project, should be applied for root project only
Expand All @@ -23,7 +25,19 @@ fun Project.configureVersioning() {
// should be provided in the gradle.properties
configure<ReckonExtension> {
setDefaultInferredScope(Scope.MINOR.name)
snapshots()
if (findProperty("reckon.stage")?.toString() == "snapshot") {
snapshots()
// skip -rc candidates tags
setTagParser { tagName ->
if (tagName.contains("-rc.[0-9]+".toRegex())) {
Optional.empty()
} else {
VersionTagParser.getDefault().parse(tagName)
}
}
} else {
stages("rc", "final")
}
setScopeCalc(calcScopeFromProp())
setStageCalc(calcStageFromProp())
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ plugins {
}

detekt {
config = rootProject.files("detekt-config.yml")
config.setFrom(rootProject.files("detekt-config.yml"))
basePath = rootDir.canonicalPath
buildUponDefaultConfig = true
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ kotlin {
}
}

tasks.register<Jar>(SOURCES_JAR) {
archiveClassifier.set("sources")
from(kotlin.sourceSets.main.map { it.kotlin })
nulls marked this conversation as resolved.
Show resolved Hide resolved
}

configureJacoco()
tasks.withType<Test> {
useJUnitPlatform()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ publishing {
}
}

configurePublications()
configurePublishing()
Loading