OSDN Git Service

Release v0.14.1
[dictzip-java/dictzip-java.git] / build.gradle
index 869db31..ee3932c 100644 (file)
-import org.apache.tools.ant.filters.ReplaceTokens
-import groovy.swing.SwingBuilder
-
 plugins {
-    // bintray
-    id "com.jfrog.bintray" version "1.6"
-    id "com.github.spotbugs" version "1.7.1"
-    id 'maven-publish'
-    id 'signing'
-}
-
-// common settings
-subprojects {
-    apply plugin: 'java'
-    apply plugin: 'jacoco'
-    apply plugin: 'checkstyle'
-    apply plugin: 'com.jfrog.bintray'
-    apply plugin: 'maven'
-    apply plugin: 'maven-publish'
-    apply plugin: 'signing'
-
-    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'
-    }
-
-    repositories {
-        jcenter()
-    }
-
-    dependencies {
-        testImplementation 'org.testng:testng:6.9.10'
-    }
-    test.useTestNG()
-
-    tasks.withType(JavaCompile) {
-        options.compilerArgs << "-Xlint:deprecation" << "-Xlint:unchecked"
-    }
-
-    javadoc {
-        options.locale = 'en_US'
-    }
-
-    task sourcesJar(type: Jar, dependsOn: classes) {
-        from sourceSets.main.allSource
-    }
-
-    task javadocJar(type: Jar, dependsOn: javadoc) {
-        from javadoc.destinationDir
-    }
-
-    artifacts {
-        archives jar
-        archives sourcesJar
-        archives javadocJar
-    }
-}
-
-project(':dictzip-lib') {
-    dependencies {
-        testImplementation 'tokyo.northside:northside-io:0.2.0'
-    }
-    version = projectVersion
-    group = projectGroup
-    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
-        }
-    }
-
-    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
-                    }
-                }
-            }
-        }
-    }
-    // maven publish to local repository.(for test)
-    uploadArchives {
-        repositories.mavenDeployer {
-            // for local maven
-            repository url: "file://$System.env.HOME/.m2/repository"
-            beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
-            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
-                    }
-                }
-            }
-        }
-    }
+    alias(libs.plugins.nexus.publish)
+    alias(libs.plugins.git.version)
 }
 
-project(':dictzip-cli') {
-    apply plugin: 'application'
-    mainClassName = 'org.dict.zip.cli.Main'
-    applicationName = 'dictzip'
-
-    dependencies {
-        implementation project(':dictzip-lib'),
-           'gnu.getopt:java-getopt:1.0.13'
-        testImplementation 'tokyo.northside:northside-io:0.2.0'
-    }
-    version = projectVersion
-    group = projectGroup
-    bintray {
-        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-cli'
-            userOrg = 'dictzip'
-            licenses = ['GPL-3.0']
-            vcsUrl = projectUrl
-            labels = ['java','dictzip']
-            publicDownloadNumbers = true
-        }
-    }
-
-    task mandoc(type: Copy, overwrite: true) {
-        from "doc/dictzip.1.in"
-        into 'build/docs'
-        rename { String fileName ->
-            fileName.replace('dictzip.1.in', 'dictzip.1')
-        }
-        filter(ReplaceTokens, tokens: [copyright: projectYears, version: projectVersion])
-    }
-
-    distTar {
-        compression = Compression.GZIP
-    }
-    distTar.dependsOn mandoc
-
-    distributions {
-        main {
-            baseName = 'dictzip'
-            contents {
-                from('build/docs/dictzip.1') {
-                    into 'docs/man/man1'
-                }
-                from(javadocJar) {
-                    into 'docs'
-                }
-                from(sourcesJar) {
-                    into 'source'
-                }
-            }
-        }
-    }
-}
+group = projectGroup
 
-// askPassword - guarantee asking only once.
-ext {
-    askPassword = ''
-}
-String askPassword(prompt) {
-    if (ext.'askPassword' != '') {
-        return ext.'askPassword'
-    }
-    def keyPass = ''
-    if(System.console() == null) {
-        new SwingBuilder().edt {
-            dialog(modal: true, title: 'Enter password', alwaysOnTop: true, resizable: false, locationRelativeTo: null, pack: true, show: true) {
-                vbox {
-                    label(text: prompt)
-                    def input1 = passwordField()
-                    button(defaultButton: true, text: 'OK', actionPerformed: {
-                        keyPass = input1.password;
-                        dispose();
-                    })
-                }
-            }
-        }
-    } else {
-        System.console().println()
-        keyPass = System.console().readPassword(prompt)
-    }
-    if (keyPass.size() <= 0) {
-        throw new InvalidUserDataException("You must enter the passwords to proceed.")
-    }
-    ext.'askPassword' = new String(keyPass)
-    new String(keyPass)
+// 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'
 }
 
-gradle.taskGraph.whenReady { taskGraph ->
-     if (taskGraph.allTasks.any { it instanceof Sign }) {
-        allprojects {
-            ext.'signing.password' = askPassword("Enter password for PGP key ${property('signing.keyId')}: ")
-        }
+nexusPublishing.repositories {
+    sonatype {
+        username = project.hasProperty('sonatypeUsername') ? project.property('sonatypeUsername') : System.getenv('SONATYPE_USER')
+        password = project.hasProperty('sonatypePassword') ? project.property('sonatypePassword') : System.getenv('SONATYPE_PASS')
     }
 }
-
-publishing {
-  publications {
-      mavenJava(MavenPublication) {
-          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")
-            }
-            issueManagement {
-              system.set("Trac")
-              url.set("https://github.com/dictzip/dictzip-java/issues")
-            }
-          }
-      }
-  }
-}
-
-signing {
-    required { gradle.taskGraph.hasTask("uploadArchives") || gradle.taskGraph.hasTask("bintrayUpload")}
-    sign publishing.publications.mavenJava
-    sign configurations.archives
-}