Bug 60134: Add initial tasks for running japicmp to the Gradle build

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1764960 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2016-10-14 20:46:30 +00:00
parent 1d0badc7c8
commit 1bda7f6ef6
1 changed files with 63 additions and 9 deletions

View File

@ -14,6 +14,15 @@
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
==================================================================== */ ==================================================================== */
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'me.champeau.gradle:japicmp-gradle-plugin:0.1.1'
}
}
// For help converting an Ant build to a Gradle build, see // For help converting an Ant build to a Gradle build, see
// https://docs.gradle.org/current/userguide/ant.html // https://docs.gradle.org/current/userguide/ant.html
@ -51,8 +60,14 @@ subprojects {
//Put instructions for each sub project, but not the master //Put instructions for each sub project, but not the master
apply plugin: 'java' apply plugin: 'java'
apply plugin: 'jacoco' apply plugin: 'jacoco'
// See https://github.com/melix/japicmp-gradle-plugin
apply plugin: 'me.champeau.gradle.japicmp'
version = '3.16-beta1' version = '3.16-beta1'
ext {
japicmpversion = '3.15'
}
tasks.withType(JavaCompile) { tasks.withType(JavaCompile) {
options.encoding = 'UTF-8' options.encoding = 'UTF-8'
@ -102,6 +117,9 @@ subprojects {
jacoco { jacoco {
toolVersion = '0.7.7.201606060606' toolVersion = '0.7.7.201606060606'
} }
// ensure the build-dir exists
projectDir.mkdirs()
} }
project('main') { project('main') {
@ -130,6 +148,17 @@ project('main') {
artifacts { artifacts {
tests testJar tests testJar
} }
// TOOD: we should not duplicate this task in each project, but I did not figure out how to inject the artifactId for each project
task japicmp(type: me.champeau.gradle.ArtifactJapicmpTask, dependsOn: jar) {
baseline = 'org.apache.poi:poi:' + japicmpversion + '@jar'
to = jar.archivePath
onlyModified = true
// not available, see issue #6: onlyBinaryIncompatibleModified = true
failOnModification = false
txtOutputFile = file("$buildDir/reports/japi.txt")
// not available, see issue #6: htmlOutputFile = file("$buildDir/reports/japi.html")
}
} }
project('ooxml') { project('ooxml') {
@ -162,6 +191,17 @@ project('ooxml') {
testCompile 'junit:junit:4.12' testCompile 'junit:junit:4.12'
testCompile project(path: ':main', configuration: 'tests') testCompile project(path: ':main', configuration: 'tests')
} }
// TOOD: we should not duplicate this task in each project, but I did not figure out how to inject the artifactId for each project
task japicmp(type: me.champeau.gradle.ArtifactJapicmpTask, dependsOn: jar) {
baseline = 'org.apache.poi:poi-ooxml:' + japicmpversion + '@jar'
to = jar.archivePath
onlyModified = true
// not available, see issue #6: onlyBinaryIncompatibleModified = true
failOnModification = false
txtOutputFile = file("$buildDir/reports/japi.txt")
// not available, see issue #6: htmlOutputFile = file("$buildDir/reports/japi.html")
}
} }
project('examples') { project('examples') {
@ -187,6 +227,17 @@ project('excelant') {
testCompile project(path: ':main', configuration: 'tests') testCompile project(path: ':main', configuration: 'tests')
} }
// TOOD: we should not duplicate this task in each project, but I did not figure out how to inject the artifactId for each project
task japicmp(type: me.champeau.gradle.ArtifactJapicmpTask, dependsOn: jar) {
baseline = 'org.apache.poi:poi-excelant:' + japicmpversion + '@jar'
to = jar.archivePath
onlyModified = true
// not available, see issue #6: onlyBinaryIncompatibleModified = true
failOnModification = false
txtOutputFile = file("$buildDir/reports/japi.txt")
// not available, see issue #6: htmlOutputFile = file("$buildDir/reports/japi.html")
}
} }
project('integrationtest') { project('integrationtest') {
@ -229,12 +280,15 @@ project('scratchpad') {
testCompile 'junit:junit:4.12' testCompile 'junit:junit:4.12'
testCompile project(path: ':main', configuration: 'tests') testCompile project(path: ':main', configuration: 'tests')
} }
}
/* // TOOD: we should not duplicate this task in each project, but I did not figure out how to inject the artifactId for each project
* Notes: task japicmp(type: me.champeau.gradle.ArtifactJapicmpTask, dependsOn: jar) {
* baseline = 'org.apache.poi:poi-scratchpad:' + japicmpversion + '@jar'
* See https://github.com/melix/japicmp-gradle-plugin and to = jar.archivePath
* https://github.com/codehaus/groovy-git/blob/7f940159920d4ea5bc727cfcbef8aba9b48c5e50/gradle/binarycompatibility.gradle for an example of using japicmp onlyModified = true
* // not available, see issue #6: onlyBinaryIncompatibleModified = true
**/ failOnModification = false
txtOutputFile = file("$buildDir/reports/japi.txt")
// not available, see issue #6: htmlOutputFile = file("$buildDir/reports/japi.html")
}
}