X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=build.gradle;h=d0cee3e5dc214c8d752a86980b1f55e54176a29d;hb=6942f5a5e998a0b8147ae47b701bf1d2efb1e2a3;hp=66b9cceb724d5fda2359eea4423027679b0b6e77;hpb=c2b7f429b7cb04815ba0f2f537eb1190f7e33ee3;p=dictzip-java%2Fdictzip-java.git diff --git a/build.gradle b/build.gradle index 66b9cce..d0cee3e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,28 +1,43 @@ import org.apache.tools.ant.filters.ReplaceTokens plugins { - id "com.jfrog.bintray" version "1.6" id 'java-library' - id "org.nosphere.gradle.github.actions" version "1.1.0" id 'maven-publish' - id 'com.palantir.git-version' version "0.12.3" + id 'java-library-distribution' + id "io.github.gradle-nexus.publish-plugin" version "1.1.0" + id 'com.palantir.git-version' version "0.13.0" } -// Drop prefix 'v' from latest tag version. -version = gitVersion().substring(1) +// 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' +} + +def props = project.file("dictzip-cli/src/main/resources/org/dict/zip/Version.properties") +task writeVersionFile { + def folder = props.getParentFile() + if (!folder.exists()) { + folder.mkdirs() + } + props.delete() + props.text = "version=" + project.version +} + +jar.dependsOn("writeVersionFile") // common settings subprojects { 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") ignoreFailures = true toolVersion = '6.16.1' } @@ -34,12 +49,17 @@ subprojects { } 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() } @@ -55,108 +75,83 @@ subprojects { } } -project(':dictzip-lib') { +project(':northside-io') { apply plugin: 'java-library' - apply plugin: 'com.jfrog.bintray' version = rootProject.version - bintray { - dryRun = false - publish = false - user = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : System.getenv('BINTRAY_USER') - key = project.hasProperty('bintrayApiKey') ? project.property('bintrayApiKey') : System.getenv('BINTRAY_API_KEY') - configurations = ['archives'] - pkg { - repo = 'maven' - name = 'dictzip-lib' - userOrg = 'dictzip' - licenses = ['GPL-2.0+CE'] - vcsUrl = projectUrl - labels = ['java', 'dictzip'] - publicDownloadNumbers = true - } + dependencies { + implementation 'commons-io:commons-io:2.11.0' } - 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 - } - } - } - } +} + +project(':dictzip-lib') { + apply plugin: 'java-library' + apply plugin: "signing" + version = rootProject.version + + dependencies { + testImplementation project(':northside-io') } publishing { publications { - project.afterEvaluate { - mavenJava(MavenPublication) { - from components.java - artifactId = "dictzip" - groupId = projectGroup - 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") - } + mavenJava(MavenPublication) { + from components.java + artifactId = "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") } - scm { - connection.set("scm:git:git://github.com/dictzip/dictzip-java.git") - url.set(projectUrl) - } - issueManagement { - url.set(projectUrl + "/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.set("miurahr") + name.set("Hiroshi Miura") + email.set("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 'AzurePackages' - url 'https://pkgs.dev.azure.com/miurahr/github/_packaging/maven/maven/v1' - credentials(PasswordCredentials) { - username = System.getenv("AZURE_USER") - password = System.getenv("AZURE_TOKEN") - } - authentication { - basic(BasicAuthentication) - } + sonatype { + stagingProfileId.set("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 { + if (project.hasProperty("signingKey")) { + def signingKey = findProperty("signingKey").toString() + def signingPassword = findProperty("signingPassword").toString() + 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') { @@ -167,6 +162,7 @@ project(':dictzip-cli') { dependencies { implementation project(':dictzip-lib') implementation 'gnu.getopt:java-getopt:1.0.13' + testImplementation project(':northside-io') } task mandoc(type: Copy) { from "doc/dictzip.1.in" @@ -184,7 +180,6 @@ project(':dictzip-cli') { distributions { main { - baseName = 'dictzip' contents { from('build/docs/dictzip.1') { into 'docs/man/man1'