aboutsummaryrefslogtreecommitdiffstats
path: root/build.gradle
diff options
context:
space:
mode:
authorDominik Stadler <centic@apache.org>2016-10-07 19:33:11 +0000
committerDominik Stadler <centic@apache.org>2016-10-07 19:33:11 +0000
commit41e1e9ffb88d4076e08ca8de721146287c79eec6 (patch)
treece5ed57ef4799eb5f363937c48d15d3da8122e21 /build.gradle
parent21627eb1ab5ab8bf3eec9113a19739a9fc0241a8 (diff)
downloadpoi-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.gradle219
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
+ *
+ **/