- /* ====================================================================
- 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 {
- // 2.x fails with "Could not get unknown property 'me'"
- classpath 'me.champeau.gradle:japicmp-gradle-plugin:0.1.2'
- classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.0"
- }
- }
-
- 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 {
- attributes {
- attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, Bundling.EXTERNAL))
- }
- }
- }
-
- dependencies {
- antLibs("org.junit.jupiter:junit-jupiter:5.7.0")
- antLibs("org.apache.ant:ant-junitlauncher:1.10.9")
- }
-
- ant.taskdef(name: "junit",
- classname: "org.apache.tools.ant.taskdefs.optional.junitlauncher.confined.JUnitLauncherTask",
- classpath: configurations.antLibs.asPath)
-
- wrapper {
- gradleVersion = '6.8'
- }
-
- 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 properties for all projects, including this one
- */
- allprojects {
- apply plugin: 'eclipse'
- }
-
- /**
-
- 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-library'
- apply plugin: 'jacoco'
-
- // See https://github.com/melix/japicmp-gradle-plugin
- apply plugin: 'me.champeau.gradle.japicmp'
-
- version = '5.0.1-SNAPSHOT'
- ext {
- bouncyCastleVersion = '1.68'
- commonsCodecVersion = '1.15'
- commonsCompressVersion = '1.20'
- commonsMathVersion = '3.6.1'
- japicmpversion = '5.0.0'
- junitVersion = '5.7.0'
- log4jVersion = '2.14.0'
- mockitoVersion = '3.6.0'
- hamcrestVersion = '2.2'
- xmlbeansVersion = '5.0.0'
- batikVersion = '1.14'
- }
-
- tasks.withType(JavaCompile) {
- options.encoding = 'UTF-8'
- }
-
- sourceCompatibility = 1.8
- targetCompatibility = 1.8
-
- repositories {
- mavenCentral()
- maven {
- url 'https://repository.apache.org/content/repositories/releases'
- }
- }
-
- dependencies {
- testImplementation "org.junit.jupiter:junit-jupiter:${junitVersion}"
- testImplementation "org.mockito:mockito-core:${mockitoVersion}"
- testImplementation "org.hamcrest:hamcrest:${hamcrestVersion}"
- testImplementation "org.apache.logging.log4j:log4j-core:${log4jVersion}"
- }
-
- jar {
- manifest {
- attributes 'Implementation-Title': 'Apache POI', 'Implementation-Version': version
- }
- }
-
- test {
- // make XML test-results available for Jenkins CI
- useJUnitPlatform()
- reports {
- junitXml.enabled = true
- }
-
- // 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'
-
- systemProperties['junit.jupiter.execution.parallel.enabled'] = 'false'
- }
-
- jacoco {
- toolVersion = '0.8.6'
- }
-
- jacocoTestReport {
- reports {
- xml.enabled true
- }
- }
-
- // ensure the build-dir exists
- projectDir.mkdirs()
-
- if (project.hasProperty('enableSonar')) {
- // See https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-gradle/ and
- // https://docs.sonarqube.org/display/SONARQUBE52/Analyzing+with+SonarQube+Scanner+for+Gradle
- // for documentation of properties.
- //
- // Some additional properties are currently set in the Jenkins-DSL, see jenksin/create_jobs.groovy
- //
- 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"
- // currently supported providers on Jenkins: "hg,git": property "sonar.scm.provider", "svn"
-
- // the plugin seems to not detect our non-standard build-layout
- property "sonar.junit.reportPaths", "$projectDir/build/test-results/test"
- property "sonar.coverage.jacoco.xmlReportPaths", "$projectDir/build/reports/jacoco/test/jacocoTestReport.xml"
- }
- }
- }
-
- 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")
- }
- }
|