mirror of https://github.com/apache/poi.git
184 lines
6.3 KiB
Groovy
184 lines
6.3 KiB
Groovy
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.
|
|
==================================================================== */
|
|
|
|
final String MODULE_NAME = 'org.apache.poi.ooxml.schemas'
|
|
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)
|
|
output.dir(JAVA9_OUT, builtBy: 'compileJava9')
|
|
java {
|
|
srcDirs = [BEANS_SRC]
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
api "org.apache.xmlbeans:xmlbeans:${xmlbeansVersion}"
|
|
}
|
|
|
|
idea {
|
|
module {
|
|
// Marks the already(!) added srcDir as "generated"
|
|
generatedSourceDirs += file(BEANS_SRC)
|
|
resourceDirs += file(BEANS_RES)
|
|
}
|
|
}
|
|
|
|
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'
|
|
options.fork = true
|
|
options.forkOptions.jvmArgs += '-Xmx2G'
|
|
}
|
|
|
|
task compileJava9(type: JavaCompile) {
|
|
dependsOn 'compileJava'
|
|
|
|
javaCompiler = javaToolchains.compilerFor {
|
|
languageVersion = JavaLanguageVersion.of(Math.max(11, jdkVersion))
|
|
}
|
|
sourceCompatibility = 1.9
|
|
targetCompatibility = 1.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 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', 'word10.xsd', 'word12.xsd', 'xlThreaded*.xsd', 'dml-drawing.xsd', 'drawing-chart2012.xsd',
|
|
'chartEx.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) {
|
|
inputs.dir 'build/xsds'
|
|
outputs.dir 'build/generated-resources'
|
|
|
|
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: BEANS_SRC,
|
|
classgendir: BEANS_RES,
|
|
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
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task sourceJar(type: Jar) {
|
|
setArchiveClassifier 'sources'
|
|
from sourceSets.main.allJava
|
|
}
|
|
|
|
jar {
|
|
dependsOn 'sourceJar'
|
|
|
|
manifest {
|
|
attributes ('Automatic-Module-Name': MODULE_NAME, 'Multi-Release': 'true')
|
|
}
|
|
}
|
|
|
|
sourcesJar {
|
|
metaInf {
|
|
from("$projectDir/../legal/LICENSE")
|
|
from("$projectDir/../legal/NOTICE")
|
|
}
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
POI(MavenPublication) {
|
|
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'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
spotbugsTest.enabled = false
|
|
spotbugsMain.enabled = false
|
|
javadoc.enabled = false
|
|
javadocJar.enabled = false
|
|
|
|
cyclonedxBom {
|
|
// includeConfigs is the list of configuration names to include when generating the BOM (leave empty to include every configuration)
|
|
includeConfigs = ["runtimeClasspath"]
|
|
// skipConfigs is a list of configuration names to exclude when generating the BOM
|
|
//skipConfigs = ["compileClasspath", "testCompileClasspath"]
|
|
// Specified the type of project being built. Defaults to 'library'
|
|
projectType = "library"
|
|
// Specified the version of the CycloneDX specification to use. Defaults to 1.4.
|
|
schemaVersion = "1.4"
|
|
// Boms destination directory (defaults to build/reports)
|
|
destination = file("build/reports")
|
|
// The file name for the generated BOMs (before the file format suffix). Defaults to 'bom'
|
|
outputName = "poi-ooxml-full-${project.version}.bom"
|
|
// The file format generated, can be xml, json or all for generating both
|
|
outputFormat = "all"
|
|
// Exclude BOM Serial Number
|
|
includeBomSerialNumber = true
|
|
} |