Java-Installer/build.gradle

171 lines
4.8 KiB
Groovy
Raw Normal View History

2022-01-15 20:47:23 +00:00
plugins {
// Apply the java-library plugin to add support for Java Library
id 'java-library'
id 'maven-publish'
id 'signing'
id("io.github.gradle-nexus.publish-plugin") version "1.1.0"
2022-01-15 20:47:23 +00:00
}
2022-04-02 08:01:11 +00:00
// Set version of programm //
2022-01-15 20:47:23 +00:00
version = project.file("./VERSION").text.trim()
def version = project.file("./VERSION").text.trim()
2022-01-15 20:47:23 +00:00
2022-04-02 08:01:11 +00:00
group = "de.rpjosh"
2022-01-15 20:47:23 +00:00
// ----- //
2023-01-06 17:01:04 +00:00
// Set correct encoding
2023-01-13 20:25:13 +00:00
compileJava.options.encoding = 'UTF-8'
2023-01-06 17:01:04 +00:00
tasks.withType(Javadoc) {
2023-01-13 20:25:13 +00:00
options.encoding = 'UTF-8'
2023-01-06 17:01:04 +00:00
}
2022-01-15 20:47:23 +00:00
sourceCompatibility = 11
targetCompatibility = 11
2023-11-24 17:17:33 +00:00
// Create a single .jar with all dependencies
2022-01-15 20:47:23 +00:00
task fatJar(type: Jar) {
archiveClassifier = ''
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
2022-01-15 20:47:23 +00:00
manifest {
attributes( 'Implementation-Title': 'installer',
'Implementation-Version': version,
'Implementation-Group': project.group, )
}
archivesBaseName = "installer"
from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
{
exclude "META-INF/*.SF"
exclude "META-INF/*.DSA"
exclude "META-INF/*.RSA"
}
with jar
destinationDirectory.set(layout.buildDirectory.dir("dist"))
2022-01-15 20:47:23 +00:00
}
task sourcesJar(type: Jar, dependsOn: classes) {
archiveClassifier = 'sources'
2022-01-15 20:47:23 +00:00
from sourceSets.main.allSource
}
2023-01-06 17:01:04 +00:00
//sourceSets.main.resources { srcDirs = ["src/main/java"]; exclude "**/*.java" }
2022-01-15 20:47:23 +00:00
task javadocJar(type: Jar, dependsOn: javadoc) {
manifest {
attributes( 'Implementation-Title': 'installer',
'Implementation-Version': version,
'Implementation-Group': project.group, )
}
archiveClassifier = 'javadoc'
2022-01-15 20:47:23 +00:00
from javadoc.destinationDir
}
artifacts {
archives fatJar
archives sourcesJar
archives javadocJar
}
2023-11-24 17:17:33 +00:00
// The created jar file will be copied automatically into the release directory
2022-01-15 20:47:23 +00:00
task copyJar(type: Copy) {
2023-01-06 17:01:04 +00:00
from file("$buildDir/dist/installer-" + version + ".jar"), file("$buildDir/libs/installer-" + version + "-javadoc.jar"), file("$buildDir/libs/installer-" + version + "-sources.jar")
2022-04-02 08:01:11 +00:00
into file("$buildDir/../release")
2022-01-15 20:47:23 +00:00
}
2023-11-24 17:17:33 +00:00
// Build the maven repo file structure -> Javadoc can be used easily in eclipse
2022-01-15 20:47:23 +00:00
task copyJarToMaven (type: Copy) {
2023-01-06 17:01:04 +00:00
from file("$buildDir/dist/installer-" + version + ".jar"), file("$buildDir/libs/installer-" + version + "-javadoc.jar"), file("$buildDir/libs/installer-" + version + "-sources.jar")
2022-04-02 08:01:11 +00:00
into file("$buildDir/../release/mavenRepo/de/rpjosh/installer/" + version)
2022-01-15 20:47:23 +00:00
}
2023-11-24 17:17:33 +00:00
// Publish to local maven repo
java {
withJavadocJar()
withSourcesJar()
}
nexusPublishing {
repositories {
sonatype{
nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/"))
snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/"))
// Or use System.getenv?
username=project.property("maven.sonatype.user")
password=project.property("maven.sonatype.password")
}
}
}
publishing {
publications {
javaPubl(MavenPublication) {
artifactId = 'installer'
from components.java
pom {
name = 'Java-Installer'
description = 'A simple installation routine for your Java application'
url = 'https://git.rpjosh.de/RPJosh/Java-Installer'
licenses {
license {
2022-05-12 15:43:14 +00:00
name = 'The GNU AFFERO GENERAL PUBLIC LICENSE, Version 3'
url = 'https://www.gnu.org/licenses/agpl-3.0.html'
}
}
developers {
developer {
id = 'RPJosh'
name = 'Jonas Letzbor'
email = 'RPjosh@rpjosh.de'
}
}
scm {
connection = 'scm:git:https://git.rpjosh.de/RPJosh/Java-Installer.git'
developerConnection = 'scm:git:https://git.rpjosh.de/RPJosh/Java-Installer.git'
url = 'https://git.rpjosh.de/RPJosh/Java-Installer'
}
}
}
}
}
signing {
def signingKey = project.property("maven.sonatype.signing.key")
def signingPassword = project.property("maven.sonatype.signing.password")
useInMemoryPgpKeys(signingKey, signingPassword)
2023-11-24 17:17:33 +00:00
// Only sign the publications
sign publishing.publications.javaPubl
}
2022-01-15 20:47:23 +00:00
build.finalizedBy copyJar
build.finalizedBy copyJarToMaven
repositories {
2022-04-02 08:01:11 +00:00
mavenCentral()
2022-01-15 20:47:23 +00:00
}
dependencies {
// https://mvnrepository.com/artifact/com.github.vatbub/mslinks
2022-04-02 08:01:11 +00:00
api group: 'com.github.vatbub', name: 'mslinks', version: '1.0.6.2'
2022-01-15 20:47:23 +00:00
}
tasks.named('jar') {
manifest {
attributes( 'Implementation-Title': 'installer',
'Implementation-Version': version,
2022-04-02 08:01:11 +00:00
'Implementation-Group': 'de.rpjosh', )
2022-01-15 20:47:23 +00:00
}
}