OSDN Git Service

test: update file test case
[dictzip-java/dictzip-java.git] / build.gradle
1 import org.apache.tools.ant.filters.ReplaceTokens
2
3 plugins {
4     id 'java-library'
5     id 'maven-publish'
6     id 'java-library-distribution'
7     id "signing"
8     id "io.github.gradle-nexus.publish-plugin" version "1.1.0"
9     id 'com.palantir.git-version' version "0.12.3"
10 }
11
12 // calculate version string from git tag, hash and commit distance
13 // It treat as release tag when current HEAD has a tag,
14 // and repository is clean, no modification,and no untracked files,
15 if (versionDetails().isCleanTag) {
16     // drop first 'v' from version tag
17     version = gitVersion().substring(1)
18 } else {
19     version = versionDetails().lastTag.substring(1) + '-' + versionDetails().commitDistance + '-' + versionDetails().gitHash + '-SNAPSHOT'
20 }
21
22 // common settings
23 subprojects {
24     apply plugin: 'jacoco'
25     apply plugin: 'java'
26     apply plugin: 'checkstyle'
27     apply plugin: 'maven-publish'
28
29     [compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
30     checkstyle {
31         config = resources.text.fromFile("${rootProject.projectDir}/config/checkstyle/checkstyle.xml")
32         ignoreFailures = true
33         toolVersion = '6.16.1'
34     }
35     version = rootProject.version
36     group = projectGroup
37
38     repositories {
39         mavenCentral()
40     }
41
42     dependencies {
43         implementation "org.jetbrains:annotations:23.0.0"
44         testImplementation 'commons-io:commons-io:2.11.0'
45         testImplementation "org.junit.jupiter:junit-jupiter:5.8.2"
46     }
47     test {
48         useJUnitPlatform()
49     }
50
51     java {
52         sourceCompatibility = JavaVersion.VERSION_1_8
53         targetCompatibility = JavaVersion.VERSION_1_8
54         withSourcesJar()
55         withJavadocJar()
56     }
57
58     javadoc {
59         options.locale = 'en_US'
60     }
61
62     artifacts {
63         archives jar
64         archives sourcesJar
65         archives javadocJar
66     }
67 }
68
69 project(':dictzip-lib') {
70     apply plugin: 'java-library'
71     version = rootProject.version
72     publishing {
73         publications {
74             mavenJava(MavenPublication) {
75                 from components.java
76                 artifactId = "dictzip"
77                 groupId = "io.github.dictzip"
78                 pom {
79                     name.set("dictzip")
80                     description.set(projectDesc)
81                     url.set(projectUrl)
82                     licenses {
83                         license {
84                             name.set("GNU General Public License v2.0 w/Classpath exception")
85                             url.set("https://www.gnu.org/software/classpath/license.html")
86                         }
87                     }
88                     scm {
89                         connection.set("scm:git:git://github.com/dictzip/dictzip-java.git")
90                         developerConnection.set("scm:git:git://github.com/dictzip/dictzip-java.git")
91                         url.set(projectUrl)
92                     }
93                     developers {
94                         developer {
95                             id = "miurahr"
96                             name = "Hiroshi Miura"
97                             email = "miurahr@linux.com"
98                         }
99                     }
100                     issueManagement {
101                         url.set(projectUrl + "/issues")
102                     }
103                 }
104             }
105         }
106     }
107     nexusPublishing {
108         repositories {
109             sonatype {
110                 stagingProfileId = "a1cf138b142cd"
111                 nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/"))
112                 snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/"))
113                 username = project.hasProperty('sonatypeUsername') ? project.property('sonatypeUsername') : System.getenv('SONATYPE_USER')
114                 password = project.hasProperty('sonatypePassword') ? project.property('sonatypePassword') : System.getenv('SONATYPE_PASS')
115             }
116         }
117     }
118
119     signing {
120         def signingKey = findProperty("signingKey")
121         def signingPassword = findProperty("signingPassword")
122         if (signingKey) {
123             useInMemoryPgpKeys(signingKey, signingPassword)
124         } else {
125             useGpgCmd()
126         }
127         sign publishing.publications.mavenJava
128     }
129     tasks.withType(Sign) {
130         def hasKey = project.hasProperty("signingKey") || project.hasProperty("signing.gnupg.keyName")
131         onlyIf { hasKey && versionDetails().isCleanTag }
132     }
133 }
134
135 project(':dictzip-cli') {
136     apply plugin: 'application'
137     mainClassName = 'org.dict.zip.cli.Main'
138     applicationName = 'dictzip'
139     version = rootProject.version
140     dependencies {
141         implementation project(':dictzip-lib')
142         implementation 'gnu.getopt:java-getopt:1.0.13'
143     }
144     task mandoc(type: Copy) {
145         from "doc/dictzip.1.in"
146         into 'build/docs'
147         rename { String fileName ->
148             fileName.replace('dictzip.1.in', 'dictzip.1')
149         }
150         filter(ReplaceTokens, tokens: [copyright: projectYears, version: project.version])
151     }
152
153     distTar {
154         compression = Compression.GZIP
155     }
156     distTar.dependsOn mandoc
157
158     distributions {
159         main {
160             contents {
161                 from('build/docs/dictzip.1') {
162                     into 'docs/man/man1'
163                 }
164                 from(javadocJar) {
165                     into 'docs'
166                 }
167                 from(sourcesJar) {
168                     into 'source'
169                 }
170             }
171         }
172     }
173 }