From c8e6de43777cd74f60ba34dd439c2da3e24a7d47 Mon Sep 17 00:00:00 2001
From: dgelessus <dgelessus@users.noreply.github.com>
Date: Wed, 4 Oct 2023 18:13:17 +0200
Subject: [PATCH] Switch to java-library and maven-publish plugins

---
 .gitlab-ci.yml |   2 +-
 build.gradle   | 108 ++++++++++++++++++++++---------------------------
 2 files changed, 50 insertions(+), 60 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 302dc3c..e464302 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -14,6 +14,6 @@ publish:
     - openssl aes-256-cbc -pass "env:ENCRYPTION_PASSWORD" -d -a -md md5 -in gradle.properties.enc -out gradle.properties
     - openssl aes-256-cbc -pass "env:ENCRYPTION_PASSWORD" -d -a -md md5 -in pubring.gpg.enc -out pubring.gpg
     - openssl aes-256-cbc -pass "env:ENCRYPTION_PASSWORD" -d -a -md md5 -in secring.gpg.enc -out secring.gpg
-    - ./gradlew ${GRADLE_OPTIONS} uploadArchives
+    - ./gradlew ${GRADLE_OPTIONS} publish
   only:
     - master@general/stups/rodin_eventb_ast
diff --git a/build.gradle b/build.gradle
index f129480..d1c598c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,13 +1,15 @@
 plugins {
 	id "eclipse"
-	id "java"
-	id "maven"
+	id "java-library"
+	id "maven-publish"
+	id "signing"
 }
 
 sourceCompatibility = '1.7'
 
 project.version = '3.2.1-SNAPSHOT'
 project.group = 'de.hhu.stups'
+final isSnapshot = project.version.endsWith("-SNAPSHOT")
 
 sourceSets {
 	main {
@@ -74,6 +76,10 @@ index e71bf08..0977da1 100644
 	}
 }
 
+java {
+	withSourcesJar()
+	withJavadocJar()
+}
 
 compileJava {
 	dependsOn << 'tom'
@@ -87,73 +93,57 @@ clean {
 	delete "src/org/eventb/internal/core/typecheck/TypeUnifier.java"
 }
 
-if (project.hasProperty('ossrhUsername') && project.hasProperty('ossrhPassword')) {
-	println "Configured upload task"
-
-	apply plugin: 'signing'
-
-	task javadocJar(type: Jar) {
-		classifier = 'javadoc'
-		from javadoc
-	}
-
-	task sourcesJar(type: Jar) {
-		classifier = 'sources'
-		from sourceSets.main.allSource
-	}
-
-	artifacts {
-		archives javadocJar, sourcesJar
-	}
-
-	ext."signing.secretKeyRingFile" = rootProject.file("secring.gpg").absolutePath
-
-	signing {
-		sign configurations.archives
-	}
+publishing {
+	publications {
+		mavenJava(MavenPublication) {
+			from components.java
 
-	uploadArchives {
-		repositories {
-			mavenDeployer {
-				beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
+			pom {
+				name = "Rodin EventB AST"
+				description = "The AST library extracted from the Rodin Platform."
+				url = "https://github.com/hhu-stups/rodin-ast"
 
-				repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
-					authentication(userName: ossrhUsername, password: ossrhPassword)
+				licenses {
+					license {
+						name = "Eclipse Public License, V 1.0"
+						url = "https://www.eclipse.org/legal/epl-v10.html"
+					}
 				}
 
-				snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
-					authentication(userName: ossrhUsername, password: ossrhPassword)
+				scm {
+					connection = "scm:git:git://github.com/hhu-stups/rodin-ast.git"
+					developerConnection = "scm:git:git@github.com:hhu-stups/rodin-ast.git"
+					url = "https://github.com/hhu-stups/rodin-ast"
 				}
 
-				pom.project {
-					name 'Rodin EventB AST'
-					packaging 'jar'
-					// optionally artifactId can be defined here
-					description 'The AST library extracted from the Rodin Platform.'
-					url 'https://github.com/hhu-stups/rodin-ast'
-
-					licenses {
-						license {
-							name 'Eclipse Public License, V 1.0'
-							url 'https://www.eclipse.org/legal/epl-v10.html'
-						}
-					}
-
-					scm {
-						connection 'scm:git:git://github.com/hhu-stups/rodin-ast.git'
-						developerConnection 'scm:git:git@github.com:hhu-stups/rodin-ast.git'
-						url 'https://github.com/hhu-stups/rodin-ast'
+				developers {
+					developer {
+						id = "bendisposto"
+						name = "Jens Bendisposto"
+						email = "jens@bendisposto.de"
 					}
+				}
+			}
+		}
+	}
 
-					developers {
-						developer {
-							id 'bendisposto'
-							name 'Jens Bendisposto'
-							email 'jens@bendisposto.de'
-						}
-					}
+	repositories {
+		maven {
+			final releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2"
+			final snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots"
+			url isSnapshot ? snapshotsRepoUrl : releasesRepoUrl
+			if (project.hasProperty("ossrhUsername") && project.hasProperty("ossrhPassword")) {
+				credentials {
+					username project.ossrhUsername
+					password project.ossrhPassword
 				}
 			}
 		}
 	}
 }
+
+ext."signing.secretKeyRingFile" = rootProject.file("secring.gpg").absolutePath
+
+signing {
+	sign publishing.publications.mavenJava
+}
-- 
GitLab