diff --git a/.gitignore b/.gitignore index 05fef7f..2d9c3a4 100644 --- a/.gitignore +++ b/.gitignore @@ -68,6 +68,7 @@ local.properties # Gradle .gradle +/gradle.properties # Space for private notes /notes \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile index 6ab7b22..cd20ee8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -8,7 +8,17 @@ pipeline { stages { stage('Build') { steps { - sh './gradlew build publishToMavenLocal --warning-mode all' + script { + withCredentials([ + file(credentialsId: 'MAVEN_PUBLISH_SONATYPE_GRADLE_PROPERTIES', variable: 'SONATYPE_CREDENTIALS') + ]) { + // Build and publish + sh 'cp \${SONATYPE_CREDENTIALS} ./gradle.properties' + sh './gradlew --no-build-cache build publishToMavenLocal publishToSonatype closeAndReleaseSonatypeStagingRepository --warning-mode all' + sh 'rm ./gradle.properties' + } + + } } } } diff --git a/README.md b/README.md index a709816..66df266 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Purpose -This project provides a simple installation tool for installing your java application under the operation systems *windows* and *linux*. +This project provides a simple installation tool for installing your java application under the operating systems *windows* and *linux*. If you want to use a simple installer instead of the installation method the operating systems ships with (like *msi* or *dpkg packages*) feel free to use this installer. This installer can be used for a **single jar file** with a few dependencies. @@ -16,11 +16,12 @@ Basic auth for downloading the executable is supported * install the program *portable* in a single folder * creating a **desktop** and a **start menu** entry with a custom icon * a **launch script** for opening the application will be provided +* put your application into the autostart folder of the operating system *(for GUI applications)* ### Windows * besides the removal via the launch script an **uninstall** entry in the *contol center* will also be created -* install the programm only for the current **user** -> no need of administrator rights +* install the programm only for the current **user** → no need of administrator rights ### Linux @@ -28,6 +29,12 @@ Basic auth for downloading the executable is supported # Getting started +## How to get + +You can build the library by yourself or use the provided version in the [Maven Central Repository](https://central.sonatype.com/artifact/de.rpjosh/installer/1.1.0). + +## Usage + The usage of the library is very simple. See the below code snippet for a short example. ``` @@ -45,13 +52,14 @@ conf.setDownloadURLForProgramm(URL, BASIC_AUTH_USER, BASIC_AUTH_PASSWORD); Installer installer = new Installer(conf); installer.installProgramm(args); -// whether the installation was successful (0) or erroneous (<0) +// whether the installation was successful (0) or erroneous (>0) System.out.println(installer.getResponseCode()); ``` ___ For a real life example you can take a look at the installer of [RPdb](https://git.rpjosh.de/RPJosh/RPdb/src/branch/master/Program/Java/tk.rpjosh.rpdb.installer). + # License This project is licensed under the GPLv3. Please see the [LICENSE](LICENSE) file for an full license. diff --git a/build.gradle b/build.gradle index af90fd2..f1cb376 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,8 @@ 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" } // Set version of programm // @@ -25,7 +27,7 @@ targetCompatibility = 11 // create a single .jar with all dependencies // task fatJar(type: Jar) { - classifier = '' + archiveClassifier = '' duplicatesStrategy = DuplicatesStrategy.EXCLUDE manifest { @@ -46,7 +48,7 @@ task fatJar(type: Jar) { } task sourcesJar(type: Jar, dependsOn: classes) { - classifier = 'sources' + archiveClassifier = 'sources' from sourceSets.main.allSource } @@ -59,7 +61,7 @@ task javadocJar(type: Jar, dependsOn: javadoc) { 'Implementation-Version': version, 'Implementation-Group': project.group, ) } - classifier = 'javadoc' + archiveClassifier = 'javadoc' from javadoc.destinationDir } @@ -89,11 +91,25 @@ java { 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 { - mavenJava(MavenPublication) { + javaPubl(MavenPublication) { artifactId = 'installer' from components.java + pom { name = 'Java-Installer' description = 'A simple installation routine for your Java application' @@ -107,15 +123,30 @@ publishing { developers { developer { id = 'RPJosh' - name = '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) + + // Only sign the publication + sign publishing.publications.javaPubl +} + build.finalizedBy copyJar diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index aa991fc..fae0804 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists