1 import org.apache.tools.ant.filters.ReplaceTokens
6 id 'java-library-distribution'
7 id "io.github.gradle-nexus.publish-plugin" version "1.2.0"
8 id 'com.palantir.git-version' version "0.13.0"
11 // calculate version string from git tag, hash and commit distance
12 // It treat as release tag when current HEAD has a tag,
13 // and repository is clean, no modification,and no untracked files,
14 if (versionDetails().isCleanTag) {
15 // drop first 'v' from version tag
16 version = gitVersion().substring(1)
18 version = versionDetails().lastTag.substring(1) + '-' + versionDetails().commitDistance + '-' + versionDetails().gitHash + '-SNAPSHOT'
21 def props = project.file("dictzip-cli/src/main/resources/org/dict/zip/Version.properties")
22 task writeVersionFile {
23 def folder = props.getParentFile()
24 if (!folder.exists()) {
28 props.text = "version=" + project.version
31 jar.dependsOn("writeVersionFile")
35 apply plugin: 'jacoco'
37 apply plugin: 'checkstyle'
38 apply plugin: 'maven-publish'
42 toolVersion = '6.16.1'
44 version = rootProject.version
52 implementation "org.jetbrains:annotations:23.0.0"
53 testImplementation 'commons-io:commons-io:2.11.0'
54 testImplementation "org.junit.jupiter:junit-jupiter:5.9.2"
61 sourceCompatibility = JavaVersion.VERSION_1_8
62 targetCompatibility = JavaVersion.VERSION_1_8
68 options.locale = 'en_US'
78 project(':northside-io') {
79 apply plugin: 'java-library'
80 version = rootProject.version
82 implementation 'commons-io:commons-io:2.11.0'
86 project(':dictzip-lib') {
87 apply plugin: 'java-library'
88 apply plugin: "signing"
89 version = rootProject.version
92 testImplementation project(':northside-io')
97 mavenJava(MavenPublication) {
99 artifactId = "dictzip"
102 description.set(projectDesc)
106 name.set("GNU General Public License v2.0 w/Classpath exception")
107 url.set("https://www.gnu.org/software/classpath/license.html")
111 connection.set("scm:git:git://github.com/dictzip/dictzip-java.git")
112 developerConnection.set("scm:git:git://github.com/dictzip/dictzip-java.git")
118 name.set("Hiroshi Miura")
119 email.set("miurahr@linux.com")
123 url.set(projectUrl + "/issues")
132 stagingProfileId.set("a1cf138b142cd")
133 nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/"))
134 snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/"))
135 username = project.hasProperty('sonatypeUsername') ? project.property('sonatypeUsername') : System.getenv('SONATYPE_USER')
136 password = project.hasProperty('sonatypePassword') ? project.property('sonatypePassword') : System.getenv('SONATYPE_PASS')
142 if (project.hasProperty("signingKey")) {
143 def signingKey = findProperty("signingKey").toString()
144 def signingPassword = findProperty("signingPassword").toString()
145 useInMemoryPgpKeys(signingKey, signingPassword)
149 sign publishing.publications.mavenJava
151 tasks.withType(Sign) {
152 def hasKey = project.hasProperty("signingKey") || project.hasProperty("signing.gnupg.keyName")
153 onlyIf { hasKey && versionDetails().isCleanTag }
157 project(':dictzip-cli') {
158 apply plugin: 'application'
159 mainClassName = 'org.dict.zip.cli.Main'
160 applicationName = 'dictzip'
161 version = rootProject.version
163 implementation project(':dictzip-lib')
164 implementation 'gnu.getopt:java-getopt:1.0.13'
165 testImplementation project(':northside-io')
167 task mandoc(type: Copy) {
168 from "doc/dictzip.1.in"
170 rename { String fileName ->
171 fileName.replace('dictzip.1.in', 'dictzip.1')
173 filter(ReplaceTokens, tokens: [copyright: projectYears, version: project.version])
177 compression = Compression.GZIP
179 distTar.dependsOn mandoc
184 from('build/docs/dictzip.1') {