diff options
author | Dominik Stadler <centic@apache.org> | 2016-10-07 19:33:11 +0000 |
---|---|---|
committer | Dominik Stadler <centic@apache.org> | 2016-10-07 19:33:11 +0000 |
commit | 41e1e9ffb88d4076e08ca8de721146287c79eec6 (patch) | |
tree | ce5ed57ef4799eb5f363937c48d15d3da8122e21 /build.gradle | |
parent | 21627eb1ab5ab8bf3eec9113a19739a9fc0241a8 (diff) | |
download | poi-41e1e9ffb88d4076e08ca8de721146287c79eec6.tar.gz poi-41e1e9ffb88d4076e08ca8de721146287c79eec6.zip |
Add initial compile steps with a simple multi-project setup to build.gradle
Adjust some tests to make them run fine in the Gradle build as well
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1763816 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'build.gradle')
-rw-r--r-- | build.gradle | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/build.gradle b/build.gradle index 20f98e8205..7bf080246e 100644 --- a/build.gradle +++ b/build.gradle @@ -19,3 +19,222 @@ // https://docs.gradle.org/current/userguide/ant.html ant.importBuild 'build.xml' + +/** + +Define properties for all projects, including this one + +*/ +allprojects { + apply plugin: 'eclipse' + + task wrapper(type: Wrapper) { + gradleVersion = '2.14.1' + } + + task adjustWrapperPropertiesFile << { + ant.replaceregexp(match:'^#.*', replace:'', flags:'g', byline:true) { + fileset(dir: project.projectDir, includes: 'gradle/wrapper/gradle-wrapper.properties') + } + new File(project.projectDir, 'gradle/wrapper/gradle-wrapper.properties').with { it.text = it.readLines().findAll { it }.sort().join('\n') } + ant.fixcrlf(file: 'gradle/wrapper/gradle-wrapper.properties', eol: 'lf') + } + wrapper.finalizedBy adjustWrapperPropertiesFile +} + +/** + +Define things that are only necessary in sub-projects, but not in the master-project itself + +*/ +subprojects { + //Put instructions for each sub project, but not the master + apply plugin: 'java' + apply plugin: 'jacoco' + + version = '3.16-beta1' + + tasks.withType(JavaCompile) { + options.encoding = 'UTF-8' + } + + sourceCompatibility = 1.6 + + repositories { + mavenCentral() + } + + jar { + manifest { + attributes 'Implementation-Title': 'Apache POI', 'Implementation-Version': version + } + } + + test { + // Exclude some tests that are not actually tests or do not run cleanly on purpose + exclude '**/BaseTestBorderStyle.class' + exclude '**/BaseTestCellUtil.class' + exclude '**/TestUnfixedBugs.class' + exclude '**/TestOneFile.class' + + systemProperties = System.properties + + // set heap size for the test JVM(s) + minHeapSize = "128m" + maxHeapSize = "768m" + + // show standard out and standard error of the test JVM(s) on the console + //testLogging.showStandardStreams = true + + // http://forums.gradle.org/gradle/topics/jacoco_related_failure_in_multiproject_build + systemProperties['user.dir'] = workingDir + + systemProperties['POI.testdata.path'] = '../../test-data' + //systemProperties['user.language'] = 'en' + //systemProperties['user.country'] = 'US' + } + + test.beforeSuite { TestDescriptor suite -> + System.setProperty('user.language', 'en') + System.setProperty('user.country', 'US') + } + + jacoco { + toolVersion = '0.7.7.201606060606' + } +} + +project('main') { + sourceSets.main.java.srcDirs = ['../../src/java'] + sourceSets.main.resources.srcDirs = ['../../src/resources/main'] + sourceSets.test.java.srcDirs = ['../../src/testcases'] + + dependencies { + compile 'commons-codec:commons-codec:1.10' + compile 'commons-logging:commons-logging:1.2' + + testCompile 'junit:junit:4.12' + } + + // Create a separate jar for test-code to depend on it in other projects + // See http://stackoverflow.com/questions/5144325/gradle-test-dependency + task testJar(type: Jar, dependsOn: testClasses) { + baseName = "test-${project.archivesBaseName}" + from sourceSets.test.output + } + + configurations { + tests + } + + artifacts { + tests testJar + } +} + +project('ooxml') { + sourceSets.main.java.srcDirs = ['../../src/ooxml/java'] + sourceSets.main.resources.srcDirs = ['../../src/ooxml/resources', '../../src/resources/ooxml'] + sourceSets.test.java.srcDirs = ['../../src/ooxml/testcases'] + + // for now import the ant-task for building the jars from build.xml + // we need to rename the tasks as e.g. task "jar" conflicts with :ooxml:jar + ant.importBuild('../../build.xml') { antTargetName -> + 'ant-' + antTargetName + } + compileJava.dependsOn 'ant-compile-ooxml-xsds' + + dependencies { + compile 'org.apache.xmlbeans:xmlbeans:2.6.0' + compile 'org.apache.commons:commons-collections4:4.1' + compile 'org.apache.santuario:xmlsec:2.0.6' + compile 'org.bouncycastle:bcpkix-jdk15on:1.54' + compile 'com.github.virtuald:curvesapi:1.04' + + // for ooxml-lite, should we move this somewhere else? + compile 'junit:junit:4.12' + + compile project(':main') + compile project(':scratchpad') // TODO: get rid of this dependency! + compile files('../../ooxml-lib/ooxml-schemas-1.3.jar') + compile files('../../ooxml-lib/ooxml-security-1.1.jar') + + testCompile 'junit:junit:4.12' + testCompile project(path: ':main', configuration: 'tests') + } +} + +project('examples') { + sourceSets.main.java.srcDirs = ['../../src/examples/src'] + + dependencies { + compile project(':main') + compile project(':ooxml') + } +} + + +project('excelant') { + sourceSets.main.java.srcDirs = ['../../src/excelant/java'] + sourceSets.main.resources.srcDirs = ['../../src/excelant/resources'] + sourceSets.test.java.srcDirs = ['../../src/excelant/testcases'] + + dependencies { + compile 'org.apache.ant:ant:1.9.4' + + compile project(':main') + compile project(':ooxml') + + testCompile project(path: ':main', configuration: 'tests') + } +} + +project('integrationtest') { + sourceSets.test.java.srcDirs = ['../../src/integrationtest'] + + dependencies { + compile 'org.apache.ant:ant:1.9.4' + + compile project(':main') + compile project(':ooxml') + compile project(':scratchpad') + compile project(':examples') + + testCompile 'junit:junit:4.12' + } + + test { + // exclude these from the normal test-run + exclude '**/TestAllFiles.class' + exclude '**/*FileHandler.class' + exclude '**/RecordsStresser.class' + } + + task integrationTest(type: Test) { + // these are just tests used during development of more test-code + exclude '**/*FileHandler.class' + exclude '**/RecordStresser.class' + } +} + +project('scratchpad') { + sourceSets.main.java.srcDirs = ['../../src/scratchpad/src'] + sourceSets.main.resources.srcDirs = ['../../src/resources/scratchpad'] + sourceSets.test.java.srcDirs = ['../../src/scratchpad/testcases'] + + dependencies { + compile project(':main') + // cyclic-dependency here: compile project(':ooxml') + + testCompile 'junit:junit:4.12' + testCompile project(path: ':main', configuration: 'tests') + } +} + +/* + * Notes: + * + * See https://github.com/melix/japicmp-gradle-plugin and + * https://github.com/codehaus/groovy-git/blob/7f940159920d4ea5bc727cfcbef8aba9b48c5e50/gradle/binarycompatibility.gradle for an example of using japicmp + * + **/ |