+import org.apache.tools.ant.filters.ReplaceTokens
+import groovy.swing.SwingBuilder
+
plugins {
- // github
- id "co.riiid.gradle" version "0.4.2"
// 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: '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'
- }
+ apply plugin: 'java'
+ apply plugin: 'jacoco'
+ apply plugin: 'checkstyle'
+ apply plugin: 'com.jfrog.bintray'
+ apply plugin: 'maven'
+ apply plugin: 'maven-publish'
+ apply plugin: 'signing'
- // Force prevent checkstyle/findbugs on Test.
- task checkstyleTest(overwrite: true) << {}
- task findbugsTest(overwrite: true) << {}
- tasks.withType(FindBugs) {
- reports {
- xml.enabled = false
- html.enabled = true
+ 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()
- maven {
- url "http://dl.bintray.com/miurahr/maven"
+ repositories {
+ jcenter()
}
- mavenCentral()
- }
- dependencies {
- testCompile 'org.testng:testng:6.9.10'
- }
+ dependencies {
+ testImplementation 'org.testng:testng:6.9.10'
+ }
+ test.useTestNG()
- test {
- useTestNG()
- }
+ tasks.withType(JavaCompile) {
+ options.compilerArgs << "-Xlint:deprecation" << "-Xlint:unchecked"
+ }
- task sourceJar(type: Jar) {
- from sourceSets.main.allSource
- classifier = 'sources'
- }
+ javadoc {
+ options.locale = 'en_US'
+ }
- task javadocJar(type: Jar, dependsOn: javadoc) {
- description 'Generate jar file that have javadoc'
- classifier = 'javadoc'
- from javadoc.destinationDir
- }
+ task sourcesJar(type: Jar, dependsOn: classes) {
+ from sourceSets.main.allSource
+ }
- artifacts {
- archives jar
- archives sourceJar
- archives javadocJar
- }
-}
+ task javadocJar(type: Jar, dependsOn: javadoc) {
+ from javadoc.destinationDir
+ }
+ artifacts {
+ archives jar
+ archives sourcesJar
+ archives javadocJar
+ }
+}
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
- version {
- name = projectVersion
- desc = projectDesc
- vcsTag = projectTag
- }
- }
- }
+ 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
+ }
+ }
+ }
+ }
+ }
}
project(':dictzip-cli') {
- apply plugin: 'application'
- mainClassName = 'org.dict.zip.cli.Main'
- applicationName = 'DictZip'
-
- dependencies {
- compile project(':dictzip-lib'),
- 'commons-codec:commons-codec:1.10',
- '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
- version {
- name = projectVersion
- desc = projectDesc
- vcsTag = projectTag
+ 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'
+ }
+ }
+ }
+ }
+}
+
+// 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)
+}
+
+gradle.taskGraph.whenReady { taskGraph ->
+ if (taskGraph.allTasks.any { it instanceof Sign }) {
+ allprojects {
+ ext.'signing.password' = askPassword("Enter password for PGP key ${property('signing.keyId')}: ")
+ }
+ }
+}
+
+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")
+ }
}
}
}
}
-if (gradle.startParameter.taskNames.contains('bintrayUpload') ||
- gradle.startParameter.taskNames.contains('githubRelease')) {
- apply from: 'build.publish.gradle'
+signing {
+ required { gradle.taskGraph.hasTask("uploadArchives") || gradle.taskGraph.hasTask("bintrayUpload")}
+ sign publishing.publications.mavenJava
+ sign configurations.archives
}