start move to require java 11 min

This commit is contained in:
PJ Fanning 2025-11-15 11:26:19 +01:00
parent 41f4570c8f
commit 323b5c8c6b
20 changed files with 77 additions and 101 deletions

View File

@ -55,12 +55,12 @@ Source code:
* Official `Apache Git repo`_ at apache.org
Requires Java 1.8 or later.
Requires Java 11 or later.
Contributing
------------------
* Download and install git, Java JDK 1.8+, and Apache Ant 1.8+ or Gradle
* Download and install git, Java JDK 11+, and Apache Ant 1.8+ or Gradle
* Check out the code from git

View File

@ -124,7 +124,7 @@ subprojects {
xmlSecVersion = '3.0.6'
apiGuardianVersion = '1.1.2'
jdkVersion = (project.properties['jdkVersion'] ?: '8') as int
jdkVersion = (project.properties['jdkVersion'] ?: '11') as int
// see https://github.com/gradle/gradle/blob/master/subprojects/jvm-services/src/main/java/org/gradle/internal/jvm/inspection/JvmVendor.java
jdkVendor = (project.properties['jdkVendor'] ?: '') as String
@ -205,7 +205,7 @@ subprojects {
doFirst {
options {
if (jdkVersion > 8) addBooleanOption('html5', true)
addBooleanOption('html5', true)
addBooleanOption('Xdoclint:all,-missing', true)
links 'https://poi.apache.org/apidocs/dev/'
if (jdkVersion >= 23) links 'https://docs.oracle.com/en/java/javase/23/docs/api/' else links 'https://docs.oracle.com/javase/8/docs/api/'
@ -213,7 +213,7 @@ subprojects {
links 'https://commons.apache.org/proper/commons-compress/apidocs/'
use = true
splitIndex = true
source = "1.8"
source = "1.11"
}
}
}
@ -414,7 +414,6 @@ subprojects {
systemProperties['java.locale.providers'] = 'JRE,CLDR'
doFirst {
if (jdkVersion > 8) {
// some options were removed in JDK 18
if (jdkVersion < 18) {
jvmArgs += [
@ -435,7 +434,6 @@ subprojects {
'-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true',
]
}
}
jacoco {
excludes = [
@ -739,7 +737,7 @@ task jenkinsLite(dependsOn: [
if (!f.exists()) {
println 'writing file ' + f.getAbsolutePath()
f.getParentFile().mkdirs()
new URL('https://ci-builds.apache.org/job/POI/job/POI-XMLBeans-DSL-1.8/lastSuccessfulBuild/artifact/build/xmlbeans-5.0.0.jar').withInputStream{ i -> f.withOutputStream{ it << i }}
new URL('https://ci-builds.apache.org/job/POI/job/POI-XMLBeans-DSL-1.11/lastSuccessfulBuild/artifact/build/xmlbeans-5.0.0.jar').withInputStream{ i -> f.withOutputStream{ it << i }}
}
}*/

View File

@ -26,7 +26,7 @@ under the License.
To build the documentation you will need to install forrest and set
the FORREST_HOME environment variable.
Since POI 4.0 you will need JDK 1.8 or newer to build and run POI.
Since POI 6.0 you will need JDK 11 or newer to build and run POI.
Some people may find the tests hang when run through Ant. If this
happens to you, try giving Ant some more memory when you run it, eg:
@ -60,8 +60,8 @@ under the License.
<!-- compiler options -->
<property name="jdk.version.source" value="1.8" description="JDK version of source code"/>
<property name="jdk.version.class" value="1.8" description="JDK version of generated class files"/>
<property name="jdk.version.source" value="11" description="JDK version of source code"/>
<property name="jdk.version.class" value="11" description="JDK version of generated class files"/>
<property name="compile.debug" value="true"/>
<condition property="isIBMVM">
@ -69,7 +69,7 @@ under the License.
</condition>
<condition property="isJava8" else="false">
<equals arg1="${ant.java.version}" arg2="1.8"/>
<equals arg1="${ant.java.version}" arg2="11"/>
</condition>
<!-- add addOpens parameter for Java 9 and higher -->
@ -296,11 +296,11 @@ under the License.
<!-- xml signature libs - not part of the distribution -->
<dependency prefix="dsig.xmlsec" artifact="org.apache.santuario:xmlsec:3.0.6" usage="ooxml-provided"/>
<dependency prefix="dsig.bouncycastle-prov" artifact="org.bouncycastle:bcprov-jdk18on:1.81" usage="ooxml-provided"/>
<dependency prefix="dsig.bouncycastle-pkix" artifact="org.bouncycastle:bcpkix-jdk18on:1.81" usage="ooxml-provided"/>
<dependency prefix="dsig.bouncycastle-util" artifact="org.bouncycastle:bcutil-jdk18on:1.81" usage="ooxml-provided"/>
<dependency prefix="dsig.bouncycastle-prov" artifact="org.bouncycastle:bcprov-jdk18on:1.82" usage="ooxml-provided"/>
<dependency prefix="dsig.bouncycastle-pkix" artifact="org.bouncycastle:bcpkix-jdk18on:1.82" usage="ooxml-provided"/>
<dependency prefix="dsig.bouncycastle-util" artifact="org.bouncycastle:bcutil-jdk18on:1.82" usage="ooxml-provided"/>
<!-- only used for signing the release - not used with the ooxml signatures -->
<dependency prefix="dsig.bouncycastle-bcpg" artifact="org.bouncycastle:bcpg-jdk18on:1.81" usage="util"/>
<dependency prefix="dsig.bouncycastle-bcpg" artifact="org.bouncycastle:bcpg-jdk18on:1.82" usage="util"/>
<dependency prefix="ooxml.test.stax2" artifact="org.codehaus.woodstox:stax2-api:4.2.1" usage="ooxml-provided"/>
<!-- svg/batik/pdf libs - not part of the distribution - move batik to its own directory because of JPMS module-path issues -->

View File

@ -29,7 +29,7 @@ These are required to sign or validate signed Office documents. The OSGi bundles
- XML Commons Resolver: https://mvnrepository.com/artifact/xml-resolver/xml-resolver/1.2-osgi
- Bouncy Castle: https://mvnrepository.com/artifact/org.bouncycastle/bcprov-ext-jdk18on/1.81, https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk18on/1.81
- Bouncy Castle: https://mvnrepository.com/artifact/org.bouncycastle/bcprov-ext-jdk18on/1.82, https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk18on/1.82
4. PDFBox and PDFBox Graphics2D
Required to render to PDF documents.
The required jars can be downloaded from:

View File

@ -39,8 +39,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
<plugin>

View File

@ -53,8 +53,8 @@ tasks.register('compileJava9', JavaCompile) {
javaCompiler = javaToolchains.compilerFor {
languageVersion = JavaLanguageVersion.of(Math.max(11, jdkVersion))
}
sourceCompatibility = 1.9
targetCompatibility = 1.9
sourceCompatibility = 1.11
targetCompatibility = 1.11
destinationDirectory = file(JAVA9_OUT + VERSIONS9)
source = file(JAVA9_SRC)
classpath = files()

View File

@ -142,14 +142,10 @@ test {
doFirst {
jvmArgs += [
"-javaagent:${OOXML_LITE_AGENT}=${OOXML_LITE_REPORT}|${OOXML_LITE_INCLUDES}",
]
if (jdkVersion > 8) {
jvmArgs += [
'--add-modules', MODULE_NAME,
'--module-path', '../build/dist/maven/poi-excelant-tests' + File.pathSeparator + files(TEST_MODULE_PATH).asPath,
]
}
}
}
publishing {

View File

@ -143,20 +143,13 @@ test {
dependsOn { testJar }
systemProperties['junit.jupiter.execution.parallel.enabled'] = 'true'
if (jdkVersion == 8) {
systemProperties['sun.java2d.renderer'] = 'sun.java2d.marlin.MarlinRenderingEngine'
}
doFirst {
jvmArgs += [
"-javaagent:${OOXML_LITE_AGENT}=${OOXML_LITE_REPORT}|${OOXML_LITE_INCLUDES}",
]
if (jdkVersion > 8) {
jvmArgs += [
'--add-modules', MODULE_NAME,
'--module-path', '../build/dist/maven/poi-integration-tests' + File.pathSeparator + files(MODULE_RUNTIME_PATH).asPath,
]
}
if (NO_SCRATCHPAD) {
systemProperty 'scratchpad.ignore', 'true'
}

View File

@ -126,7 +126,7 @@ Before running this, you should execute the "jar" target in the main build.gradl
<echo message="Compiling examples without linking to scratchpad.jar to ensure that only some specific ones require this jar"/>
<javac srcdir="../poi-examples/src/main/java" destdir="${build}"
target="1.8" source="1.8" debug="true"
target="11" source="11" debug="true"
encoding="ASCII" fork="yes" includeantruntime="false"
excludes="org/apache/poi/examples/hslf/**,org/apache/poi/examples/hsmf/**,org/apache/poi/examples/hwmf/**,**/EmbeddedObjects.java,**/EmeddedObjects.java,**/LoadEmbedded.java,**/Word2Forrest.java"
classpath="${jarpackage}" classpathref="libs">
@ -150,7 +150,7 @@ Before running this, you should execute the "jar" target in the main build.gradl
<echo message="Compiling all examples with the additional scratchpad.jar"/>
<javac srcdir="../poi-examples/src/main/java" destdir="${build}"
target="1.8" source="1.8" debug="true"
target="11" source="11" debug="true"
encoding="ASCII" fork="yes" includeantruntime="false"
classpath="${jarpackagescratchpad}" classpathref="libs">
</javac>

View File

@ -60,8 +60,8 @@ tasks.register('compileJava9', JavaCompile) {
javaCompiler = javaToolchains.compilerFor {
languageVersion = JavaLanguageVersion.of(Math.max(11, jdkVersion))
}
sourceCompatibility = 1.9
targetCompatibility = 1.9
sourceCompatibility = 1.11
targetCompatibility = 1.11
destinationDirectory = file(JAVA9_OUT + VERSIONS9)
source = file(JAVA9_SRC)
classpath = files()

View File

@ -42,8 +42,8 @@ tasks.register('compileJava9', JavaCompile) {
javaCompiler = javaToolchains.compilerFor {
languageVersion = JavaLanguageVersion.of(Math.max(11, jdkVersion))
}
sourceCompatibility = 1.9
targetCompatibility = 1.9
sourceCompatibility = 1.11
targetCompatibility = 1.11
destinationDirectory = file(JAVA9_OUT + VERSIONS9)
source = file(JAVA9_SRC)
classpath = files()

View File

@ -93,8 +93,8 @@ task compileJava9(type: JavaCompile, dependsOn: 'compileJava') {
javaCompiler = javaToolchains.compilerFor {
languageVersion = JavaLanguageVersion.of(Math.max(11, jdkVersion))
}
sourceCompatibility = 1.9
targetCompatibility = 1.9
sourceCompatibility = 1.11
targetCompatibility = 1.11
destinationDirectory = file(JAVA9_OUT + VERSIONS9)
source = file(JAVA9_SRC)
classpath = files()

View File

@ -157,8 +157,8 @@ tasks.register('compileJava9', JavaCompile) {
javaCompiler = javaToolchains.compilerFor {
languageVersion = JavaLanguageVersion.of(Math.max(11, jdkVersion))
}
sourceCompatibility = 1.9
targetCompatibility = 1.9
sourceCompatibility = 11
targetCompatibility = 11
destinationDirectory = file(JAVA9_OUT + VERSIONS9)
source = file(JAVA9_SRC)
classpath = files()
@ -174,8 +174,8 @@ tasks.register('compileTest9', JavaCompile) {
javaCompiler = javaToolchains.compilerFor {
languageVersion = JavaLanguageVersion.of(Math.max(11, jdkVersion))
}
sourceCompatibility = 1.9
targetCompatibility = 1.9
sourceCompatibility = 1.11
targetCompatibility = 1.11
destinationDirectory = file(TEST9_OUT + VERSIONS9)
source = file(TEST9_SRC)
options.compilerArgs = [
@ -214,12 +214,12 @@ javadoc {
failOnError = true
doFirst {
options {
if (jdkVersion > 8) addBooleanOption('html5', true)
addBooleanOption('html5', true)
links 'https://poi.apache.org/apidocs/dev/'
if (jdkVersion >= 23) links 'https://docs.oracle.com/en/java/javase/23/docs/api/' else links 'https://docs.oracle.com/javase/8/docs/api/'
use = true
splitIndex = true
source = "1.8"
source = "1.11"
classpath += configurations.javadocs.files
}
}
@ -250,9 +250,6 @@ test {
dependsOn { testJar }
systemProperties['junit.jupiter.execution.parallel.enabled'] = 'true'
if (jdkVersion == 8) {
systemProperties['sun.java2d.renderer'] = 'sun.java2d.marlin.MarlinRenderingEngine'
}
if (NO_SCRATCHPAD) {
useJUnitPlatform {
@ -265,14 +262,10 @@ test {
"-Xverify:all",
"-XX:ErrorFile=../build/hs_err_pid%p.log",
"-javaagent:${OOXML_LITE_AGENT}=${OOXML_LITE_REPORT}|${OOXML_LITE_INCLUDES}"
]
if (jdkVersion > 8) {
jvmArgs += [
'--add-modules', MODULE_NAME,
'--module-path', '../build/dist/maven/poi-ooxml-tests' + File.pathSeparator + files(TEST_MODULE_PATH).asPath,
]
}
}
}
publishing {

View File

@ -58,8 +58,8 @@ tasks.register('compileJava9', JavaCompile) {
javaCompiler = javaToolchains.compilerFor {
languageVersion = JavaLanguageVersion.of(Math.max(11, jdkVersion))
}
sourceCompatibility = 1.9
targetCompatibility = 1.9
sourceCompatibility = 1.11
targetCompatibility = 1.11
destinationDirectory = file(JAVA9_OUT + VERSIONS9)
source = file(JAVA9_SRC)
classpath = files()
@ -75,8 +75,8 @@ tasks.register('compileTest9', JavaCompile) {
javaCompiler = javaToolchains.compilerFor {
languageVersion = JavaLanguageVersion.of(Math.max(11, jdkVersion))
}
sourceCompatibility = 1.9
targetCompatibility = 1.9
sourceCompatibility = 1.11
targetCompatibility = 1.11
destinationDirectory = file(TEST9_OUT + VERSIONS9)
source = file(TEST9_SRC)
options.compilerArgs = [
@ -147,13 +147,11 @@ test {
systemProperties['junit.jupiter.execution.parallel.enabled'] = 'true'
doFirst {
if (jdkVersion > 8) {
jvmArgs += [
'--add-modules', MODULE_NAME,
'--module-path', '../build/dist/maven/poi-scratchpad-tests' + File.pathSeparator + files(TEST_MODULE_PATH).asPath,
]
}
}
}
publishing {

View File

@ -172,13 +172,11 @@ test {
systemProperties['junit.jupiter.execution.parallel.enabled'] = 'true'
doFirst {
if (jdkVersion > 8) {
jvmArgs += [
'--add-modules', MODULE_NAME,
'--module-path', '../build/dist/maven/poi-tests' + File.pathSeparator + files(MODULE_PATH).asPath,
]
}
}
}
publishing {

View File

@ -19,7 +19,7 @@ Release Contents
This release comes in source form:
- source archive you can build POI from (poi-src-@VERSION@-@DSTAMP@.zip or poi-src-@VERSION@-@DSTAMP@.tar.gz)
Unpack the archive and use the following command to build all POI components with JDK 1.8 or higher:
Unpack the archive and use the following command to build all POI components with JDK 11 or higher:
gradle jar

View File

@ -338,8 +338,8 @@
<td>poi-ooxml-full (known as ooxml-schemas)</td>
<td><a href="https://search.maven.org/#artifactdetails|org.apache.xmlbeans|xmlbeans|5.3.0|jar">xmlbeans</a><br/>
For signing:
<a href="https://search.maven.org/#artifactdetails|org.bouncycastle|bcpkix-jdk18on|1.81|jar">bcpkix-jdk18on</a>,
<a href="https://search.maven.org/#artifactdetails|org.bouncycastle|bcutil-jdk18on|1.81|jar">bcprov-jdk18on</a>,
<a href="https://search.maven.org/#artifactdetails|org.bouncycastle|bcpkix-jdk18on|1.82|jar">bcpkix-jdk18on</a>,
<a href="https://search.maven.org/#artifactdetails|org.bouncycastle|bcutil-jdk18on|1.82|jar">bcprov-jdk18on</a>,
<a href="https://search.maven.org/#artifactdetails|org.apache.santuario|xmlsec|3.0.6|bundle">xmlsec</a>,
<a href="https://search.maven.org/#artifactdetails|org.slf4j|slf4j-api|2.0.17|jar">slf4j-api</a>
</td>

View File

@ -34,7 +34,7 @@
</p>
<ul>
<li>
<a href="https://ci-builds.apache.org/job/POI/job/POI-DSL-1.8/lastSuccessfulBuild/artifact/build/dist/">
<a href="https://ci-builds.apache.org/job/POI/job/POI-DSL-1.11/lastSuccessfulBuild/artifact/build/dist/">
Last Successful Jenkins build for POI-trunk
</a>
</li>

View File

@ -249,7 +249,7 @@
<p>The classes have been tested against the following libraries, which need to be included additionally to the
<a href="site:components">default dependencies</a>:</p>
<ul>
<li>BouncyCastle bcpkix, bcprov and bcutil (tested against 1.81)</li>
<li>BouncyCastle bcpkix, bcprov and bcutil (tested against 1.82)</li>
<li>Apache Santuario "xmlsec" (tested against 3.0.5)</li>
<li>and slf4j-api (tested against 2.0.x)</li>
</ul>

View File

@ -35,7 +35,7 @@
2b. You must be a member of the committee group
3. Release manager must have their public key appended to the KEYS file checked in to SVN and the key published on one of the public key servers.
More info can be found here: <a href="https://www.apache.org/dev/release-signing.html">https://www.apache.org/dev/release-signing.html</a>
4. You must have Java JDK 1.8 installed and active.
4. You must have Java JDK 11 installed and active.
5. You must have the following utilities installed on your local machine and available in your path:
* <a href="www.openssh.com">ssh</a>
* <a href="www.gnupg.org">gnupg</a>
@ -102,9 +102,9 @@ svn update --set-depth infinity dist/release/poi/
- build.gradle
- osgi/pom.xml (version and poi.version)
2. Force a new build at https://ci-builds.apache.org/job/POI/job/POI-DSL-1.8
2. Force a new build at https://ci-builds.apache.org/job/POI/job/POI-DSL-1.11
- when build completes, download the built jars from
https://ci-builds.apache.org/job/POI/job/POI-DSL-1.8/lastSuccessfulBuild/artifact/
https://ci-builds.apache.org/job/POI/job/POI-DSL-1.11/lastSuccessfulBuild/artifact/
3. To produce the source distributions, run
- ./gradlew srcDistZip
@ -146,8 +146,8 @@ find . -name "*.asc" -exec gpg --no-secmem-warning --verify {} \;
(III) Deploy Jars to Maven Staging
1. Ensure that there has been a build with the right svn commit and then download the jars
- https://ci-builds.apache.org/job/POI/job/POI-DSL-1.8
- https://ci-builds.apache.org/job/POI/job/POI-DSL-1.8/lastSuccessfulBuild/artifact/
- https://ci-builds.apache.org/job/POI/job/POI-DSL-1.11
- https://ci-builds.apache.org/job/POI/job/POI-DSL-1.11/lastSuccessfulBuild/artifact/
2. Set up a `poi-prep` directory and copy all the jars other than the `test` jars into it.
- The artifacts in the archive.zip that you can download (see 1 above) are grouped in different dirs