plugins {
id 'java-library'
- id "org.nosphere.gradle.github.actions" version "1.1.0"
id 'maven-publish'
+ id 'java-library-distribution'
+ id "signing"
+ id "io.github.gradle-nexus.publish-plugin" version "1.1.0"
id 'com.palantir.git-version' version "0.12.3"
}
-// Drop prefix 'v' from latest tag version.
-version = {it -> it.substring(1, it.length())}(gitVersion())
-
-repositories {
- mavenCentral()
- maven {
- name = "GitLabPackages"
- url "https://gitlab.com/api/v4/groups/dictzip/-/packages/maven"
- credentials(HttpHeaderCredentials) {
- name = 'Job-Token'
- value = System.getenv("CI_JOB_TOKEN")
- }
- authentication {
- header(HttpHeaderAuthentication)
- }
- }
+// calculate version string from git tag, hash and commit distance
+// It treat as release tag when current HEAD has a tag,
+// and repository is clean, no modification,and no untracked files,
+if (versionDetails().isCleanTag) {
+ // drop first 'v' from version tag
+ version = gitVersion().substring(1)
+} else {
+ version = versionDetails().lastTag.substring(1) + '-' + versionDetails().commitDistance + '-' + versionDetails().gitHash + '-SNAPSHOT'
}
// common settings
apply plugin: 'jacoco'
apply plugin: 'java'
apply plugin: 'checkstyle'
- apply plugin: 'maven'
apply plugin: 'maven-publish'
- sourceCompatibility = JavaVersion.VERSION_1_8
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
checkstyle {
config = resources.text.fromFile("${rootProject.projectDir}/config/checkstyle/checkstyle.xml")
version = rootProject.version
group = projectGroup
+ repositories {
+ mavenCentral()
+ }
+
dependencies {
- testImplementation 'commons-io:commons-io:2.6'
- testImplementation 'org.testng:testng:6.9.10'
+ implementation "org.jetbrains:annotations:23.0.0"
+ testImplementation 'commons-io:commons-io:2.11.0'
+ testImplementation "org.junit.jupiter:junit-jupiter:5.8.2"
+ }
+ test {
+ useJUnitPlatform()
}
- test.useTestNG()
java {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
withSourcesJar()
withJavadocJar()
}
project(':dictzip-lib') {
apply plugin: 'java-library'
version = rootProject.version
- install {
- repositories.mavenInstaller {
- pom.project {
- name = project.name
- packaging = 'jar'
- description = projectDesc
- url = projectUrl
- version = project.version
- licenses {
- license {
- name = licenseName
- url = licenseUrl
- distribution = 'repo'
- }
- }
- scm {
- url = githubUrl
- connection = "scm:git:${githubUrl}"
- developerConnection = "scm:git:${githubUrl}"
- }
- developers {
- developer {
- id = projectOwner
- name = developerName
- email = developerEmail
- }
- }
- }
- }
- }
-
publishing {
publications {
- project.afterEvaluate {
- mavenJava(MavenPublication) {
- from components.java
- artifactId = "dictzip"
- groupId = "org.dict.zip"
- version = project.version.toString()
- pom {
- name.set(project.name)
- description.set(projectDesc)
- url.set(projectUrl)
- licenses {
- license {
- name.set("GNU General Public License Version 2+CE")
- url.set("https://www.gnu.org/licenses/old-licenses/gpl-2.0")
- }
- }
- scm {
- connection.set("scm:git:git://github.com/dictzip/dictzip-java.git")
- url.set("https://github.com/dictzip/dictzip-java")
+ mavenJava(MavenPublication) {
+ from components.java
+ artifactId = "dictzip"
+ groupId = "io.github.dictzip"
+ pom {
+ name.set("dictzip")
+ description.set(projectDesc)
+ url.set(projectUrl)
+ licenses {
+ license {
+ name.set("GNU General Public License v2.0 w/Classpath exception")
+ url.set("https://www.gnu.org/software/classpath/license.html")
}
- issueManagement {
- system.set("Trac")
- url.set("https://github.com/dictzip/dictzip-java/issues")
+ }
+ scm {
+ connection.set("scm:git:git://github.com/dictzip/dictzip-java.git")
+ developerConnection.set("scm:git:git://github.com/dictzip/dictzip-java.git")
+ url.set(projectUrl)
+ }
+ developers {
+ developer {
+ id = "miurahr"
+ name = "Hiroshi Miura"
+ email = "miurahr@linux.com"
}
}
+ issueManagement {
+ url.set(projectUrl + "/issues")
+ }
}
}
}
+ }
+ nexusPublishing {
repositories {
- maven {
- name = "GitHubPackages"
- url = "https://maven.pkg.github.com/dictzip/dictzip-java"
- credentials {
- username = System.getenv("GITHUB_ACTOR")
- password = System.getenv("GITHUB_TOKEN")
- }
- }
- maven {
- name = "GitLabPackages"
- url = "https://gitlab.com/api/v4/groups/dictzip/-/packages/maven"
- credentials(HttpHeaderCredentials) {
- name = 'Job-Token'
- value = System.getenv("CI_JOB_TOKEN")
- }
- authentication {
- header(HttpHeaderAuthentication)
- }
+ sonatype {
+ stagingProfileId = "a1cf138b142cd"
+ nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/"))
+ snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/"))
+ username = project.hasProperty('sonatypeUsername') ? project.property('sonatypeUsername') : System.getenv('SONATYPE_USER')
+ password = project.hasProperty('sonatypePassword') ? project.property('sonatypePassword') : System.getenv('SONATYPE_PASS')
}
}
}
+
+ signing {
+ def signingKey = findProperty("signingKey")
+ def signingPassword = findProperty("signingPassword")
+ if (signingKey) {
+ useInMemoryPgpKeys(signingKey, signingPassword)
+ } else {
+ useGpgCmd()
+ }
+ sign publishing.publications.mavenJava
+ }
+ tasks.withType(Sign) {
+ def hasKey = project.hasProperty("signingKey") || project.hasProperty("signing.gnupg.keyName")
+ onlyIf { hasKey && versionDetails().isCleanTag }
+ }
}
project(':dictzip-cli') {
distributions {
main {
- baseName = 'dictzip'
contents {
from('build/docs/dictzip.1') {
into 'docs/man/man1'