Skip to content

Commit 64713ad

Browse files
committed
Modernization updates
* Java 7 * OSGi * Gradle 5.6.3 * lint / errorprone, plus some fixes * TravisCI * bump validator version to latest * bump mockito-core version to latest
1 parent 30cec8a commit 64713ad

9 files changed

Lines changed: 204 additions & 113 deletions

File tree

.travis.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
language: java
2+
jdk:
3+
- openjdk8
4+
- openjdk11
5+
install: {}
6+
script:
7+
- ./gradlew assemble check
8+
9+
before_cache:
10+
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
11+
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
12+
13+
cache:
14+
directories:
15+
- $HOME/.gradle/caches/
16+
- $HOME/.gradle/wrapper/
17+

build.gradle

Lines changed: 83 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,18 @@
1616
* - ASL 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
1717
*/
1818

19+
buildscript {
20+
repositories {
21+
mavenCentral()
22+
}
23+
dependencies {
24+
classpath 'biz.aQute.bnd:biz.aQute.bnd.gradle:4.2.0'
25+
}
26+
};
1927

28+
plugins {
29+
id("net.ltgt.errorprone") version "0.8.1" apply false
30+
}
2031

2132
/*
2233
* This has to be here... It will not be taken into account in common.gradle!
@@ -51,24 +62,50 @@
5162
apply(plugin: "java");
5263
apply(plugin: "maven");
5364
apply(plugin: "signing");
54-
apply(plugin: "osgi");
65+
apply(plugin: "biz.aQute.bnd.builder");
5566
apply(plugin: "idea");
5667
apply(plugin: "eclipse");
68+
apply(plugin: "net.ltgt.errorprone");
5769

5870
apply(from: "project.gradle");
5971

72+
group = "com.github.java-json-tools";
73+
74+
ext.forRelease = !version.endsWith("-SNAPSHOT");
75+
6076
/*
6177
* Repositories to use
6278
*/
6379
repositories {
6480
mavenCentral();
81+
if (!forRelease) {
82+
maven {
83+
url "https://oss.sonatype.org/content/repositories/snapshots"
84+
}
85+
}
86+
/* Allow staging references for last pre-release testing. */
87+
if (project.properties.containsKey("sonatypeUsername")) {
88+
maven {
89+
url "https://oss.sonatype.org/service/local/staging/deploy/maven2"
90+
credentials {
91+
username = project.properties["sonatypeUsername"]
92+
password = project.properties["sonatypePassword"]
93+
}
94+
}
95+
}
96+
}
97+
98+
/*
99+
* Add errorprone checking.
100+
*/
101+
dependencies {
102+
errorprone("com.google.errorprone:error_prone_core:2.3.3")
103+
errorproneJavac("com.google.errorprone:javac:9+181-r4173-1")
65104
}
66105

67106
/*
68107
* Necessary! Otherwise TestNG will not be used...
69108
*
70-
* Also, we don't want gradle's default HTML report: it does not support
71-
* parameterized tests which I use a _lot_.
72109
*/
73110
test {
74111
useTestNG() {
@@ -84,6 +121,20 @@ task sourcesJar(type: Jar, dependsOn: classes) {
84121
from sourceSets.main.allSource;
85122
}
86123

124+
/*
125+
* Lint all the things!
126+
*/
127+
allprojects {
128+
gradle.projectsEvaluated {
129+
tasks.withType(JavaCompile) {
130+
options.compilerArgs << "-Xlint:all" << "-Xlint:-serial" << "-Xlint:-deprecation" << "-Werror"
131+
}
132+
tasks.withType(Javadoc) {
133+
options.addStringOption('Xwerror', '-quiet')
134+
}
135+
}
136+
}
137+
87138
/*
88139
* Javadoc: we need to tell where the overview.html is, it will not pick it up
89140
* automatically...
@@ -104,39 +155,42 @@ artifacts {
104155
archives javadocJar;
105156
}
106157

107-
task wrapper(type: Wrapper) {
108-
gradleVersion = "1.11";
109-
distributionUrl = "http://services.gradle.org/distributions/gradle-${gradleVersion}-all.zip";
158+
wrapper {
159+
gradleVersion = "5.6.3";
160+
distributionUrl = "https://services.gradle.org/distributions/gradle-${gradleVersion}-all.zip";
110161
}
111162

112-
task pom << {
113-
pom {}.writeTo("${projectDir}/pom.xml");
163+
task pom {
164+
doLast {
165+
pom {}.writeTo("${projectDir}/pom.xml");
166+
}
114167
}
115168

116169
/*
117170
* SIGNING
118171
*/
119172

120173
project.ext {
121-
gitrwscm = sprintf("git@github.com:fge/%s", name);
122-
gitroscm = sprintf("https://github.com/fge/%s.git", name);
123-
projectURL = sprintf("https://github.com/fge/%s", name);
174+
scmUrl = sprintf("git@github.com:java-json-tools/%s.git", name);
175+
projectURL = sprintf("https://github.com/java-json-tools/%s", name);
124176
sonatypeStaging = "https://oss.sonatype.org/service/local/staging/deploy/maven2/";
125177
sonatypeSnapshots = "https://oss.sonatype.org/content/repositories/snapshots/";
126178
};
127179

128-
task checkSigningRequirements << {
129-
def requiredProperties = [ "sonatypeUsername", "sonatypePassword" ];
130-
def noDice = false;
131-
requiredProperties.each {
132-
if (project.properties[it] == null) {
133-
noDice = true;
134-
System.err.printf("property \"%s\" is not defined!")
180+
task checkSigningRequirements {
181+
doLast {
182+
def requiredProperties = [ "sonatypeUsername", "sonatypePassword" ];
183+
def noDice = false;
184+
requiredProperties.each {
185+
if (project.properties[it] == null) {
186+
noDice = true;
187+
System.err.printf("property \"%s\" is not defined!\n", it);
188+
}
135189
}
190+
if (noDice)
191+
throw new IllegalStateException("missing required properties for " +
192+
"upload");
136193
}
137-
if (noDice)
138-
throw new IllegalStateException("missing required properties for " +
139-
"upload");
140194
}
141195

142196
uploadArchives {
@@ -172,15 +226,15 @@ uploadArchives {
172226
uploadArchives.repositories.mavenDeployer
173227
]*.pom*.whenConfigured { pom ->
174228
pom.project {
175-
name "${name}";
229+
name "${project.name}";
176230
packaging "jar";
177-
description "${description}";
231+
description "${project.ext.description}";
178232
url "${projectURL}";
179233

180234
scm {
181-
url "${gitrwscm}";
182-
connection "${gitrwscm}";
183-
developerConnection "${gitroscm}";
235+
url "${scmUrl}";
236+
connection "${scmUrl}";
237+
developerConnection "scm:git:${scmUrl}";
184238
}
185239

186240
licenses {
@@ -198,15 +252,14 @@ uploadArchives {
198252

199253
developers {
200254
developer {
201-
id "fge";
202-
name "Francis Galiegue";
203-
email "fgaliegue@gmail.com";
255+
id "huggsboson";
256+
name "John Huffaker";
257+
email "jhuffaker+java-json-tools@gmail.com";
204258
}
205259
}
206260
}
207261
}
208262

209-
ext.forRelease = !version.endsWith("-SNAPSHOT");
210263
signing {
211264
required { forRelease && gradle.taskGraph.hasTask("uploadArchives") };
212265
sign configurations.archives;

gradle/wrapper/gradle-wrapper.jar

4.4 KB
Binary file not shown.
Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,5 @@
1-
#
2-
# Copyright (c) 2014, Francis Galiegue (fgaliegue@gmail.com)
3-
#
4-
# This software is dual-licensed under:
5-
#
6-
# - the Lesser General Public License (LGPL) version 3.0 or, at your option, any
7-
# later version;
8-
# - the Apache Software License (ASL) version 2.0.
9-
#
10-
# The text of both licenses is available under the src/resources/ directory of
11-
# this project (under the names LGPL-3.0.txt and ASL-2.0.txt respectively).
12-
#
13-
# Direct link to the sources:
14-
#
15-
# - LGPL 3.0: https://www.gnu.org/licenses/lgpl-3.0.txt
16-
# - ASL 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
17-
#
18-
19-
#Tue Apr 08 12:56:01 CEST 2014
201
distributionBase=GRADLE_USER_HOME
212
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.3-all.zip
224
zipStoreBase=GRADLE_USER_HOME
235
zipStorePath=wrapper/dists
24-
distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip

gradlew

Lines changed: 61 additions & 37 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)