Skip to content

Commit

Permalink
Added maven publishing to gradle
Browse files Browse the repository at this point in the history
  • Loading branch information
leventeBajczi committed May 17, 2023
1 parent d574036 commit df7c2f9
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 1 deletion.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ buildscript {
}

allprojects {
group = "hu.bme.mit.inf.theta"
group = "hu.bme.mit.theta"
version = "4.2.3"

apply(from = rootDir.resolve("gradle/shared-with-buildSrc/mirrors.gradle.kts"))
Expand Down
1 change: 1 addition & 0 deletions buildSrc/src/main/kotlin/java-common.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
apply<JavaPlugin>()
apply(plugin = "jacoco-common")
apply(plugin = "maven-artifact")

dependencies {
val implementation: Configuration by configurations
Expand Down
90 changes: 90 additions & 0 deletions buildSrc/src/main/kotlin/maven-artifact.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
plugins {
`java-library`
`maven-publish`
signing
}


open class MavenArtifactExtension(project: Project) {
var artifactId: String = project.name
var name: String = project.name.split("-").joinToString(" ", transform = String::capitalize)
var description: String = project.name.split("-").let{ it.subList(1, it.size).joinToString(" ", transform = String::capitalize) } + " subproject in the Theta model checking framework"
var url: String = "https://theta.mit.bme.hu/"
var licenseName: String = "The Apache License, Version 2.0"
var licenseUrl: String = "http://www.apache.org/licenses/LICENSE-2.0.txt"
var connection: String = "scm:git:git://github.com/ftsrg/theta.git"
var developerConnection: String = "scm:git:ssh://github.com:ftsrg/theta.git"
}

val artifactConfig = extensions.create<MavenArtifactExtension>("maven-artifact", project)

java {
withJavadocJar()
withSourcesJar()
}
tasks {
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = artifactConfig.artifactId
from(components["java"])
versionMapping {
usage("java-api") {
fromResolutionOf("runtimeClasspath")
}
usage("java-runtime") {
fromResolutionResult()
}
}
pom {
name.set(artifactConfig.name)
description.set(artifactConfig.description)
url.set(artifactConfig.url)
licenses {
license {
name.set(artifactConfig.licenseName)
url.set(artifactConfig.licenseUrl)
}
}
developers {
val contribFile = project.rootProject.rootDir.toPath().resolve("CONTRIBUTORS.md").toFile()
if (contribFile.exists()) {
contribFile.readLines().forEach { line ->
"\\* \\[(.*)]\\((.*)\\)".toRegex().matchEntire(line)?.let { matchResult ->
val (parsedName, parsedUrl) = matchResult.destructured
developer {
name.set(parsedName)
url.set(parsedUrl)
}
}
}
}
}
scm {
connection.set(artifactConfig.connection)
developerConnection.set(artifactConfig.developerConnection)
url.set(artifactConfig.url)
}
}
}
}
repositories {
maven {
val releasesRepoUrl = uri("${project.gradle.gradleUserHomeDir}/.m2/releases")
val snapshotsRepoUrl = uri("${project.gradle.gradleUserHomeDir}/.m2/snapshots")
url = if (version.toString().endsWith("SNAPSHOT")) snapshotsRepoUrl else releasesRepoUrl
print(url)
}
}
}
}

signing {
sign(publishing.publications["mavenJava"])
}

tasks.javadoc {
if (JavaVersion.current().isJava9Compatible) {
(options as StandardJavadocDocletOptions).addBooleanOption("html5", true)
}
}

0 comments on commit df7c2f9

Please sign in to comment.