-import org.apache.tools.ant.filters.ReplaceTokens
-
plugins {
- // github
- id "co.riiid.gradle" version "0.4.2"
- // bintray
- id "com.jfrog.bintray" version "1.6"
+ alias(libs.plugins.nexus.publish)
+ alias(libs.plugins.git.version)
}
-// common settings
-subprojects {
- apply plugin: 'java'
- apply plugin: 'jacoco'
- apply plugin: 'checkstyle'
- apply plugin: 'findbugs'
- apply plugin: 'co.riiid.gradle'
- apply plugin: 'com.jfrog.bintray'
- apply plugin: 'maven'
-
- sourceCompatibility = jdkVersion
- targetCompatibility = jdkVersion
- [compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
- [compileJava, compileTestJava]*.options*.bootClasspath = "$JDK_HOME/jre/lib/rt.jar"
- checkstyle {
- config = resources.text.fromFile("${rootProject.projectDir}/config/checkstyle/checkstyle.xml")
- ignoreFailures = true
- toolVersion = '6.16.1'
- }
-
- // Force prevent checkstyle/findbugs on Test.
- task checkstyleTest(overwrite: true) << {}
- task findbugsTest(overwrite: true) << {}
- tasks.withType(FindBugs) {
- reports {
- xml.enabled = false
- html.enabled = true
- }
- }
-
- repositories {
- jcenter()
- mavenCentral()
- }
-
- dependencies {
- testCompile 'org.testng:testng:6.9.10'
- }
-
- test {
- useTestNG()
- }
-
- task sourceJar(type: Jar) {
- from sourceSets.main.allSource
- classifier = 'sources'
- }
-
- task javadocJar(type: Jar, dependsOn: javadoc) {
- classifier = 'javadoc'
- from javadoc.destinationDir
- }
+group = projectGroup
- artifacts {
- archives jar
- archives sourceJar
- archives javadocJar
- }
+// 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'
}
-project(':dictzip-lib') {
- dependencies {
- testCompile '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-lib'
- licenses = ['GPL-2.0+CE']
- vcsUrl = projectUrl
- labels = ['java','dictzip']
- publicDownloadNumbers = true
- }
- }
- task mandoc << {}
- task githubRelease(overwrite: true) << {}
-}
-
-project(':dictzip-cli') {
- apply plugin: 'application'
- mainClassName = 'org.dict.zip.cli.Main'
- applicationName = 'dictzip'
-
- dependencies {
- compile project(':dictzip-lib'),
- 'gnu.getopt:java-getopt:1.0.13'
- testCompile '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'
- 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')
+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')
}
- 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(sourceJar) {
- into 'source'
- }
- }
- }
- }
- task githubRelease(overwrite: true) << {}
-}
-
-task mandoc << {}
-
-if (gradle.startParameter.taskNames.contains('bintrayUpload') ||
- gradle.startParameter.taskNames.contains('githubRelease')) {
- apply from: 'build.publish.gradle'
}