aboutsummaryrefslogtreecommitdiffstats
path: root/poi-ooxml-lite
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2021-04-07 21:40:33 +0000
committerAndreas Beeker <kiwiwings@apache.org>2021-04-07 21:40:33 +0000
commitb6aee1ef6d3e92a28ffd4b5c03e677b63b43747f (patch)
treead9c7b312976c4ed113a7f3b5b4757bfe1b3eee6 /poi-ooxml-lite
parent6458acb931a0cc17b2d5ed205a1b3fbbb78b9193 (diff)
downloadpoi-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-lite')
-rw-r--r--poi-ooxml-lite/build.gradle133
-rw-r--r--poi-ooxml-lite/src/main/java9/module-info.classbin0 -> 1757 bytes
-rw-r--r--poi-ooxml-lite/src/main/java9/module-info.java54
3 files changed, 187 insertions, 0 deletions
diff --git a/poi-ooxml-lite/build.gradle b/poi-ooxml-lite/build.gradle
new file mode 100644
index 0000000000..da40c6d1e8
--- /dev/null
+++ b/poi-ooxml-lite/build.gradle
@@ -0,0 +1,133 @@
+import java.util.function.Function
+import java.util.regex.Pattern
+import java.util.stream.Collectors
+
+/* ====================================================================
+ 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 JAVA9_SRC = 'src/main/java9'
+final String JAVA9_OUT = "${buildDir}/classes/java9/main/"
+final String VERSIONS9 = 'META-INF/versions/9'
+
+sourceSets {
+ main {
+ if (JavaVersion.current() != JavaVersion.VERSION_1_8) {
+ output.dir(JAVA9_OUT, builtBy: 'cacheJava9')
+ }
+ resources {
+ srcDirs += project(':poi-ooxml-full').sourceSets.main.output.findAll{it =~ /.*(classes\/java\/main|generated-resources)$/}
+ }
+ }
+}
+
+dependencies {
+ api "org.apache.xmlbeans:xmlbeans:${xmlbeansVersion}"
+ implementation project(':poi-ooxml-full')
+ implementation project(path:':poi-integration', configuration:'tests')
+}
+
+final MODULE_NAME = 'org.apache.poi.ooxml.schemas'
+final Pattern MODULE_REGEX = ~'\\.jar$'
+final List MAIN_MODULE_PATH = sourceSets.main.runtimeClasspath.findAll{ it.path =~ MODULE_REGEX }.collect{ it.parent }.unique()
+final String OOXML_LITE_REPORT = '../build/ooxml-lite-report'
+
+task compileOoxmlLite() {
+ dependsOn ':poi-ooxml:build', ':poi-integration:build', ':poi-excelant:build'
+
+ File fileIn = file("${OOXML_LITE_REPORT}.clazz")
+ File fileOut = file("src/main/java9/module-info.java")
+
+ outputs.upToDateWhen{
+ ant.uptodate(property: "ooxmlLiteUnchanged", srcfile: fileIn.path, targetfile: fileOut.path)
+ ant.properties.ooxmlLiteUnchanged
+ }
+
+ doLast {
+ String header = fileOut.collect().findAll { !(it =~ /exports|}/) }.join('\n')
+
+ // generate module-info based on exported classes
+ String exports = fileIn.
+ collect { " exports ${it.replaceAll('[/\\\\][^/\\\\]+$', '').replaceAll('[/\\\\]', '.')};" }.
+ findAll { !(it =~ /\.impl;$/) }.unique().sort().join('\n')
+
+ String content = header + '\n' + exports + '\n}'
+ if (fileOut.text != content) {
+ fileOut.write content
+ }
+ }
+}
+
+
+java {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+}
+
+compileJava.dependsOn 'compileOoxmlLite'
+
+task compileJava9(type: JavaCompile, dependsOn: 'compileJava') {
+ sourceCompatibility = 9
+ targetCompatibility = 9
+ destinationDirectory = file(JAVA9_OUT + VERSIONS9)
+ source = file(JAVA9_SRC)
+ classpath = files()
+ doFirst {
+ options.compilerArgs = [
+ '--patch-module', "${MODULE_NAME}=${project(':poi-ooxml-full').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)
+}
+
+jar {
+ File clazzFile = file("${OOXML_LITE_REPORT}.clazz")
+ File xsbsFile = file("${OOXML_LITE_REPORT}.xsb")
+ if (clazzFile.exists() && xsbsFile.exists()) {
+ List clazz = clazzFile.collect { "${it}.class" }
+ List clazzInner = clazzFile.collect { "${it}\$*.class" }
+ List xsbs = xsbsFile.collect { "org/apache/poi/schemas/ooxml/system/ooxml/${it}.xsb" }
+ includes = clazz + clazzInner + xsbs + ['META-INF/versions/**', 'org/apache/poi/schemas/ooxml/element/**']
+ }
+
+ destinationDirectory = file("../build/dist/maven/${project.archivesBaseName}")
+
+ if (JavaVersion.current() == JavaVersion.VERSION_1_8) {
+ into('META-INF/versions/9') {
+ from JAVA9_SRC include '*.class'
+ }
+ }
+
+ // ignore second module-info.class from poi-ooxml-full
+ // duplicatesStrategy = 'exclude'
+ includeEmptyDirs = false
+
+ manifest {
+ attributes('Automatic-Module-Name' : MODULE_NAME, 'Multi-Release': 'true')
+ }
+}
+
diff --git a/poi-ooxml-lite/src/main/java9/module-info.class b/poi-ooxml-lite/src/main/java9/module-info.class
new file mode 100644
index 0000000000..34e3970b88
--- /dev/null
+++ b/poi-ooxml-lite/src/main/java9/module-info.class
Binary files differ
diff --git a/poi-ooxml-lite/src/main/java9/module-info.java b/poi-ooxml-lite/src/main/java9/module-info.java
new file mode 100644
index 0000000000..f8e193e41e
--- /dev/null
+++ b/poi-ooxml-lite/src/main/java9/module-info.java
@@ -0,0 +1,54 @@
+/* ====================================================================
+ 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.
+==================================================================== */
+
+
+open module org.apache.poi.ooxml.schemas {
+ // this still throws "requires transitive directive for an automatic module" in JDK 14
+ // see https://bugs.openjdk.java.net/browse/JDK-8240847
+ requires transitive org.apache.xmlbeans;
+ requires java.xml;
+
+
+
+
+ exports com.microsoft.schemas.compatibility;
+ exports com.microsoft.schemas.office.excel;
+ exports com.microsoft.schemas.office.office;
+ exports com.microsoft.schemas.office.visio.x2012.main;
+ exports com.microsoft.schemas.office.word;
+ exports com.microsoft.schemas.office.x2006.digsig;
+ exports com.microsoft.schemas.vml;
+ exports org.apache.poi.schemas.ooxml.system.ooxml;
+ exports org.apache.poi.schemas.vmldrawing;
+ exports org.etsi.uri.x01903.v13;
+ exports org.openxmlformats.schemas.drawingml.x2006.chart;
+ exports org.openxmlformats.schemas.drawingml.x2006.main;
+ exports org.openxmlformats.schemas.drawingml.x2006.picture;
+ exports org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing;
+ exports org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing;
+ exports org.openxmlformats.schemas.officeDocument.x2006.customProperties;
+ exports org.openxmlformats.schemas.officeDocument.x2006.docPropsVTypes;
+ exports org.openxmlformats.schemas.officeDocument.x2006.extendedProperties;
+ exports org.openxmlformats.schemas.officeDocument.x2006.math;
+ exports org.openxmlformats.schemas.officeDocument.x2006.relationships;
+ exports org.openxmlformats.schemas.officeDocument.x2006.sharedTypes;
+ exports org.openxmlformats.schemas.presentationml.x2006.main;
+ exports org.openxmlformats.schemas.spreadsheetml.x2006.main;
+ exports org.openxmlformats.schemas.wordprocessingml.x2006.main;
+ exports org.openxmlformats.schemas.xpackage.x2006.digitalSignature;
+ exports org.w3.x2000.x09.xmldsig;
+} \ No newline at end of file