diff options
| author | Jan Matèrne <jhm@apache.org> | 2016-09-21 09:02:58 +0200 |
|---|---|---|
| committer | Jan Matèrne <jhm@apache.org> | 2016-09-21 09:02:58 +0200 |
| commit | af3d90cce9d18ff6faa4f2c1513dcf32d7cb7bb8 (patch) | |
| tree | 76d47244d834aeb7682fcbac02feff676b2890a7 /src/tests | |
| parent | e843dd287f13bc9e87b1af1201d2e557fdcc1897 (diff) | |
| download | ant-af3d90cce9d18ff6faa4f2c1513dcf32d7cb7bb8.tar.gz | |
JEP-238: create a MultiVersion-JAR with current possibilities
Diffstat (limited to 'src/tests')
| -rw-r--r-- | src/tests/antunit/taskdefs/jar-test.xml | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/tests/antunit/taskdefs/jar-test.xml b/src/tests/antunit/taskdefs/jar-test.xml index c2c8834eb..bd0026a77 100644 --- a/src/tests/antunit/taskdefs/jar-test.xml +++ b/src/tests/antunit/taskdefs/jar-test.xml @@ -249,4 +249,65 @@ Main-Class: MyClass resource="${output}/META-INF/MANIFEST.MF"/> </target> + <target name="testMultiReleaseJar" description="http://openjdk.java.net/jeps/238"> + <!-- Preparation of the 'MultiRelease-Project' --> + <property name="java8.src" value="${input}/src/java"/> + <property name="java9.src" value="${input}/src/java9"/> + <property name="java10.src" value="${input}/src/java10"/> + <property name="java8.classes" value="${input}/build/classes"/> + <property name="java9.classes" value="${input}/build/classes9"/> + <property name="java10.classes" value="${input}/build/classes10"/> + <macrodef name="create"> + <attribute name="version" /> + <sequential> + <local name="src"/> + <local name="classes"/> + <property name="src" value="${java@{version}.src}"/> + <property name="classes" value="${java@{version}.classes}"/> + <mkdir dir="${src}/org/apache/ant/test"/> + <echo file="${src}/org/apache/ant/test/MRJarTest.java"> + package org.apache.ant.test; + public class MRJarTest { + public static final String VERSION = "Java@{version}"; + } + </echo> + <mkdir dir="${classes}"/> + <javac srcdir="${src}" destdir="${classes}" debug="on" includeantruntime="false"/> + </sequential> + </macrodef> + <create version="8"/> + <create version="9"/> + <create version="10"/> + + <!-- Now create the MultiReleaseJar --> + <jar destfile="${antunit.tmpdir}/mrjar.jar"> + <manifest> + <!-- special mf-entry according to the spec --> + <attribute name="Multi-Release" value="true"/> + </manifest> + <!-- directory structure according to the spec ... --> + <!-- ... default classes loadable by old (<Java9) versions --> + <fileset dir="${java8.classes}"/> + <!-- ... per release classes, require Java9+ for loadable via standard ClassLoader --> + <zipfileset prefix="META-INF/versions/9/" dir="${java9.classes}"/> + <zipfileset prefix="META-INF/versions/10/" dir="${java10.classes}"/> + </jar> + + <!-- Now some tests --> + <loadresource property="valueFrom8"> + <javaconstant name="org.apache.ant.test.MRJarTest.VERSION"> + <classpath> + <pathelement location="${antunit.tmpdir}/mrjar.jar"/> + </classpath> + </javaconstant> + </loadresource> + <au:assertEquals expected="Java8" actual="${valueFrom8}"/> + <au:assertNestedResourceExists> + <zipentry zipfile="${antunit.tmpdir}/mrjar.jar" name="META-INF/versions/9/org/apache/ant/test/MRJarTest.class"/> + </au:assertNestedResourceExists> + <au:assertNestedResourceExists> + <zipentry zipfile="${antunit.tmpdir}/mrjar.jar" name="META-INF/versions/10/org/apache/ant/test/MRJarTest.class"/> + </au:assertNestedResourceExists> + </target> + </project> |
