diff options
author | Andreas Beeker <kiwiwings@apache.org> | 2021-04-07 21:40:33 +0000 |
---|---|---|
committer | Andreas Beeker <kiwiwings@apache.org> | 2021-04-07 21:40:33 +0000 |
commit | b6aee1ef6d3e92a28ffd4b5c03e677b63b43747f (patch) | |
tree | ad9c7b312976c4ed113a7f3b5b4757bfe1b3eee6 /poi-ooxml-full/build.gradle | |
parent | 6458acb931a0cc17b2d5ed205a1b3fbbb78b9193 (diff) | |
download | poi-b6aee1ef6d3e92a28ffd4b5c03e677b63b43747f.tar.gz poi-b6aee1ef6d3e92a28ffd4b5c03e677b63b43747f.zip |
65206 - Migrate ant / maven to gradle build
compile / jar / test of mrJars
don't include ants build.xml anymore
rename directories to match project and maven artifact names
refactor artifacts - so each project has one artifact
replace static references in hssf/dev tests with junit5 constructs, which had problems in parallel tests
increase gradle heap to 4gb because of OOM - maybe less would also work
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1888488 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'poi-ooxml-full/build.gradle')
-rw-r--r-- | poi-ooxml-full/build.gradle | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/poi-ooxml-full/build.gradle b/poi-ooxml-full/build.gradle new file mode 100644 index 0000000000..cc9fc88b53 --- /dev/null +++ b/poi-ooxml-full/build.gradle @@ -0,0 +1,179 @@ +import java.util.regex.Pattern + +/* ==================================================================== + 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. +==================================================================== */ + + +plugins { + id 'java' + id 'maven-publish' + id 'java-library' +} + +final String MODULE_NAME = 'org.apache.poi.ooxml.schemas' +final String JAVA9_SRC = 'src/main/java9' +final String JAVA9_OUT = "${buildDir}/classes/java9/main/" +final String VERSIONS9 = 'META-INF/versions/9' +final String BEANS_SRC = "${buildDir}/generated-sources" +final String BEANS_RES = "${buildDir}/generated-resources" + +sourceSets { + main { + // TypeSystemHolder.class is in the resources + output.dir(BEANS_RES, builtBy: 'generate_beans') + compileClasspath += files(BEANS_RES) + if (JavaVersion.current() != JavaVersion.VERSION_1_8) { + output.dir(JAVA9_OUT, builtBy: 'cacheJava9') + } + java { + srcDirs = [BEANS_SRC] + } + } +} + +dependencies { + api "org.apache.xmlbeans:xmlbeans:${xmlbeansVersion}" +// implementation "org.apache.logging.log4j:log4j-api:${log4jVersion}" + runtimeOnly "org.apache.logging.log4j:log4j-core:${log4jVersion}" +} + +final Pattern MODULE_REGEX = ~'\\.jar$' +final List MAIN_MODULE_PATH = sourceSets.main.runtimeClasspath.findAll{ it.path =~ MODULE_REGEX }.collect{ it.parent }.unique() + +compileJava { + dependsOn 'generate_beans' + sourceCompatibility = 8 + targetCompatibility = 8 +} + +task compileJava9(type: JavaCompile) { + dependsOn 'compileJava' + + sourceCompatibility = 9 + targetCompatibility = 9 + destinationDirectory = file(JAVA9_OUT + VERSIONS9) + source = file(JAVA9_SRC) + classpath = files() + options.compilerArgs = [ + '--patch-module', "${MODULE_NAME}=${sourceSets.main.output.asPath}", + '--module-path', files(MAIN_MODULE_PATH).asPath + ] +} + +task cacheJava9(type: Copy) { + dependsOn 'compileJava9' + + from(file(JAVA9_OUT + VERSIONS9)) + into(JAVA9_SRC) +} + +task copy_xsds(type: Copy) { + from ('src/main/xmlschema/org/apache/poi/xdgf') + from ('src/main/xmlschema/org/apache/poi/schemas') { + include 'XAdES*.xsd', '*.xsdconfig', 'xmldsig*.xsd', 'ooxmlSchemas.xsdconfig', 'markup-compatibility.xsd', 'vmlDrawing.xsd' + exclude '*.zip' + } + from ('src/main/xmlschema/org/apache/poi/poifs/crypt') { + include 'signatureInfo.xsd' + } + from (zipTree('src/main/xmlschema/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Transitional.zip')) + from (zipTree('src/main/xmlschema/org/apache/poi/schemas/OpenPackagingConventions-XMLSchema.zip')) { + include 'opc-digSig.xsd', 'opc-relationships.xsd' + } + into 'build/xsds' +} + +task generate_beans(dependsOn: copy_xsds) { + // incremental feature is not working ... + inputs.files fileTree(dir: 'build/xsds', include: '*.xsd') + outputs.file 'build/generated-resources/org/apache/poi/schemas/ooxml/system/ooxml/TypeSystemHolder.class' + + doLast { + ant.uptodate( + property: 'xmlbeans_uptodate', + targetfile: 'build/generated-resources/org/apache/poi/schemas/ooxml/system/ooxml/TypeSystemHolder.class' + ) { + srcFiles(dir: 'build/xsds', includes: '*.xsd') + } + + ant.taskdef( + name: 'xmlbean', + classname: 'org.apache.xmlbeans.impl.tool.XMLBean', + classpath: sourceSets.main.runtimeClasspath.asPath + ) + + if (!ant.properties.xmlbeans_uptodate) { + ant.xmlbean( + schema: 'build/xsds', + srcgendir: 'build/generated-sources', + classgendir: 'build/generated-resources', + destfile: 'build/xsds.jar', + srconly: true, + failonerror: true, + fork: true, + memoryMaximumSize: '1536m', + typesystemname: 'ooxml', + repackage: 'org.apache.xmlbeans.metadata:org.apache.poi.schemas.ooxml' + ) { + classpath = sourceSets.main.runtimeClasspath.asPath + } + } + } +} + +tasks.withType(Jar) { + destinationDirectory = file("../build/dist/maven/${project.archivesBaseName}") +} + +task sourceJar(type: Jar) { + classifier 'sources' + from sourceSets.main.allJava +} + +jar { + dependsOn 'sourceJar' + + if (JavaVersion.current() == JavaVersion.VERSION_1_8) { + into('META-INF/versions/9') { + from JAVA9_SRC include '*.class' + } + } + + manifest { + attributes ('Automatic-Module-Name': MODULE_NAME, 'Multi-Release': 'true') + } +} + +publishing { + publications { + POI(MavenPublication) { + artifactId "${project.archivesBaseName}" + + from components.java + artifact tasks.sourceJar + + pom { + name = 'Apache POI - OOXML schemas (full)' + description = + 'XmlBeans generated from the Ecma supplied xsds (since POI 5.0.0, the 5th edition is used):\n' + + ' https://www.ecma-international.org/publications/standards/Ecma-376.htm' + } + } + } +} + +generatePomFileForPOIPublication.destination = "../build/dist/maven/${project.archivesBaseName}/${project.archivesBaseName}-${project.version}.pom" |