1 import org.apache.tools.ant.filters.ReplaceTokens
2 import groovy.swing.SwingBuilder
6 id "com.jfrog.bintray" version "1.6"
7 id "com.github.spotbugs" version "1.7.1"
15 apply plugin: 'jacoco'
16 apply plugin: 'checkstyle'
17 apply plugin: 'com.jfrog.bintray'
19 apply plugin: 'maven-publish'
20 apply plugin: 'signing'
22 sourceCompatibility = JavaVersion.VERSION_1_8
23 [compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
25 config = resources.text.fromFile("${rootProject.projectDir}/config/checkstyle/checkstyle.xml")
27 toolVersion = '6.16.1'
35 testImplementation 'org.testng:testng:6.9.10'
39 tasks.withType(JavaCompile) {
40 options.compilerArgs << "-Xlint:deprecation" << "-Xlint:unchecked"
44 options.locale = 'en_US'
47 task sourcesJar(type: Jar, dependsOn: classes) {
48 from sourceSets.main.allSource
51 task javadocJar(type: Jar, dependsOn: javadoc) {
52 from javadoc.destinationDir
62 project(':dictzip-lib') {
64 testImplementation 'tokyo.northside:northside-io:0.2.0'
66 version = projectVersion
71 user = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : System.getenv('BINTRAY_USER')
72 key = project.hasProperty('bintrayApiKey') ? project.property('bintrayApiKey') : System.getenv('BINTRAY_API_KEY')
73 configurations = ['archives']
78 licenses = ['GPL-2.0+CE']
80 labels = ['java','dictzip']
81 publicDownloadNumbers = true
86 repositories.mavenInstaller {
90 description = projectDesc
92 version = project.version
102 connection = "scm:git:${githubUrl}"
103 developerConnection = "scm:git:${githubUrl}"
109 email = developerEmail
115 // maven publish to local repository.(for test)
117 repositories.mavenDeployer {
119 repository url: "file://$System.env.HOME/.m2/repository"
120 beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
124 description = projectDesc
126 version = project.version
131 distribution = 'repo'
136 connection = "scm:git:${githubUrl}"
137 developerConnection = "scm:git:${githubUrl}"
143 email = developerEmail
151 project(':dictzip-cli') {
152 apply plugin: 'application'
153 mainClassName = 'org.dict.zip.cli.Main'
154 applicationName = 'dictzip'
157 implementation project(':dictzip-lib'),
158 'gnu.getopt:java-getopt:1.0.13'
159 testImplementation 'tokyo.northside:northside-io:0.2.0'
161 version = projectVersion
164 user = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : System.getenv('BINTRAY_USER')
165 key = project.hasProperty('bintrayApiKey') ? project.property('bintrayApiKey') : System.getenv('BINTRAY_API_KEY')
166 configurations = ['archives']
171 licenses = ['GPL-3.0']
173 labels = ['java','dictzip']
174 publicDownloadNumbers = true
178 task mandoc(type: Copy, overwrite: true) {
179 from "doc/dictzip.1.in"
181 rename { String fileName ->
182 fileName.replace('dictzip.1.in', 'dictzip.1')
184 filter(ReplaceTokens, tokens: [copyright: projectYears, version: projectVersion])
188 compression = Compression.GZIP
190 distTar.dependsOn mandoc
196 from('build/docs/dictzip.1') {
210 // askPassword - guarantee asking only once.
214 String askPassword(prompt) {
215 if (ext.'askPassword' != '') {
216 return ext.'askPassword'
219 if(System.console() == null) {
220 new SwingBuilder().edt {
221 dialog(modal: true, title: 'Enter password', alwaysOnTop: true, resizable: false, locationRelativeTo: null, pack: true, show: true) {
224 def input1 = passwordField()
225 button(defaultButton: true, text: 'OK', actionPerformed: {
226 keyPass = input1.password;
233 System.console().println()
234 keyPass = System.console().readPassword(prompt)
236 if (keyPass.size() <= 0) {
237 throw new InvalidUserDataException("You must enter the passwords to proceed.")
239 ext.'askPassword' = new String(keyPass)
243 gradle.taskGraph.whenReady { taskGraph ->
244 if (taskGraph.allTasks.any { it instanceof Sign }) {
246 ext.'signing.password' = askPassword("Enter password for PGP key ${property('signing.keyId')}: ")
253 mavenJava(MavenPublication) {
254 artifactId = "dictzip"
255 groupId = "org.dict.zip"
256 version = project.version.toString()
258 name.set(project.name)
259 description.set(projectDesc)
263 name.set("GNU General Public License Version 2+CE")
264 url.set("https://www.gnu.org/licenses/old-licenses/gpl-2.0")
268 connection.set("scm:git:git://github.com/dictzip/dictzip-java.git")
269 url.set("https://github.com/dictzip/dictzip-java")
273 url.set("https://github.com/dictzip/dictzip-java/issues")
281 required { gradle.taskGraph.hasTask("uploadArchives") || gradle.taskGraph.hasTask("bintrayUpload")}
282 sign publishing.publications.mavenJava
283 sign configurations.archives