123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353 |
- /* ====================================================================
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ==================================================================== */
- buildscript {
- repositories {
- maven { url "https://plugins.gradle.org/m2/" }
- }
-
- dependencies {
- classpath 'me.champeau.gradle:japicmp-gradle-plugin:0.1.2' // 2.x requires Gradle >=4
- classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.5"
- }
- }
-
- repositories {
- mavenCentral()
- }
-
- // Only add the plugin for Sonar if enabled
- if (project.hasProperty('enableSonar')) {
- println 'Enabling Sonar support'
- apply plugin: "org.sonarqube"
- }
-
- // For help converting an Ant build to a Gradle build, see
- // https://docs.gradle.org/current/userguide/ant.html
-
- configurations {
- antLibs
- }
-
- dependencies {
- antLibs("junit:junit:4.12")
- antLibs("org.apache.ant:ant-junit:1.10.4")
- antLibs("org.apache.ant:ant-junit4:1.10.4")
- }
-
- ant.taskdef(name: "junit",
- classname: "org.apache.tools.ant.taskdefs.optional.junit.JUnitTask",
- classpath: configurations.antLibs.asPath)
-
- ant.importBuild 'build.xml'
-
- /**
-
- Define properties for all projects, including this one
-
- */
- allprojects {
- apply plugin: 'eclipse'
-
- task wrapper(type: Wrapper) {
- gradleVersion = '4.6'
- }
-
- task adjustWrapperPropertiesFile {
- doLast {
- 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'
-
- // See https://github.com/melix/japicmp-gradle-plugin
- apply plugin: 'me.champeau.gradle.japicmp'
-
- version = '4.0.1-SNAPSHOT'
- ext {
- japicmpversion = '4.0.0'
- }
-
- tasks.withType(JavaCompile) {
- options.encoding = 'UTF-8'
- }
-
- sourceCompatibility = 1.8
-
- 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'
-
- // Exclude Test Suites
- exclude '**/All*Tests.class'
- exclude '**/HSSFTests.class'
-
- // set heap size for the test JVM(s)
- minHeapSize = "128m"
- maxHeapSize = "768m"
-
- // Specifying the local via system properties did not work, so we set them this way
- jvmArgs '-Duser.language=en -Duser.country=US'
-
- // 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'
-
- // this is necessary for JDK 9+ to keep formatting dates the same way as in previous JDK-versions
- systemProperties['java.locale.providers'] = 'JRE,CLDR'
- }
-
- jacoco {
- toolVersion = '0.8.2'
- }
-
- // ensure the build-dir exists
- projectDir.mkdirs()
-
- if (project.hasProperty('enableSonar')) {
- sonarqube {
- properties {
- // as we currently use build/<module>/ as project-basedir, we need to tell Sonar to use
- // the root-folder as "basedir" for the projects
- property "sonar.projectBaseDir", "$projectDir/../.."
- }
- }
- }
-
- task(japicmp, type: me.champeau.gradle.ArtifactJapicmpTask, dependsOn: jar) {
- to = jar.archivePath
- onlyModified = true
- onlyBinaryIncompatibleModified = true
- failOnModification = false
- txtOutputFile = file("$buildDir/reports/japi.txt")
- htmlOutputFile = file("$buildDir/reports/japi.html")
- }
- }
-
- 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.11'
- compile 'commons-logging:commons-logging:1.2'
- compile 'org.apache.commons:commons-collections4:4.2'
- compile 'org.apache.commons:commons-math3:3.6.1'
- compile 'javax.xml.bind:jaxb-api:2.3.0'
- compile 'com.sun.xml.bind:jaxb-impl:2.3.0.1'
- compile 'com.sun.xml.bind:jaxb-core:2.3.0.1'
- compile 'javax.activation:activation:1.1.1'
-
- testCompile 'junit:junit:4.12'
- testCompile 'org.reflections:reflections:0.9.11'
- }
-
- jar {
- manifest {
- attributes 'Automatic-Module-Name': 'org.apache.poi.main'
- }
- }
-
- // 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
- }
-
- japicmp.baseline = 'org.apache.poi:poi:' + japicmpversion + '@jar'
- }
-
- 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:3.0.2'
- compile 'org.apache.commons:commons-collections4:4.2'
- compile 'org.apache.commons:commons-math3:3.6.1'
- compile 'org.apache.commons:commons-compress:1.18'
- compile 'org.apache.santuario:xmlsec:2.1.0'
- compile 'org.bouncycastle:bcpkix-jdk15on:1.60'
- compile 'com.github.virtuald:curvesapi:1.05'
-
- // 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.4.jar')
- compile files('../../ooxml-lib/ooxml-security-1.1.jar')
-
- testCompile 'junit:junit:4.12'
- testCompile 'org.mockito:mockito-core:2.21.0'
- testCompile 'org.xmlunit:xmlunit-core:2.5.1'
- testCompile 'org.reflections:reflections:0.9.11'
- testCompile project(path: ':main', configuration: 'tests')
- testCompile 'org.openjdk.jmh:jmh-core:1.19'
- testCompile 'org.openjdk.jmh:jmh-generator-annprocess:1.19'
- }
-
- jar {
- manifest {
- attributes 'Automatic-Module-Name': 'org.apache.poi.ooxml'
- }
- }
-
- japicmp.baseline = 'org.apache.poi:poi-ooxml:' + japicmpversion + '@jar'
- }
-
- project('examples') {
- sourceSets.main.java.srcDirs = ['../../src/examples/src']
-
- dependencies {
- compile project(':main')
- compile project(':ooxml')
- }
-
- japicmp.enabled = false
- }
-
-
- 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.10.4'
-
- compile project(':main')
- compile project(':ooxml')
-
- testCompile project(path: ':main', configuration: 'tests')
- }
-
- jar {
- manifest {
- attributes 'Automatic-Module-Name': 'org.apache.poi.excelant'
- }
- }
-
- japicmp.baseline = 'org.apache.poi:poi-excelant:' + japicmpversion + '@jar'
- }
-
- project('integrationtest') {
- sourceSets.test.java.srcDirs = ['../../src/integrationtest']
-
- dependencies {
- compile 'org.apache.ant:ant:1.10.4'
-
- compile project(':main')
- compile project(':ooxml')
- compile project(':scratchpad')
- compile project(':examples')
-
- testCompile 'junit:junit:4.12'
- }
-
- jar {
- manifest {
- attributes 'Automatic-Module-Name': 'org.apache.poi.integrationtest'
- }
- }
-
- 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'
- }
-
- japicmp.enabled = false
- }
-
- 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')
- }
-
- jar {
- manifest {
- attributes 'Automatic-Module-Name': 'org.apache.poi.scratchpad'
- }
- }
-
- japicmp.baseline = 'org.apache.poi:poi-scratchpad:' + japicmpversion + '@jar'
- }
|