@@ -48,6 +48,7 @@ Other changes: | |||
upgraded to 0.1.54. Jsch is the library behind the sshexec | |||
and scp Ant tasks. | |||
* Added a new <javaversion> condition. | |||
Changes from Ant 1.9.8 TO Ant 1.9.9 | |||
=================================== | |||
@@ -379,6 +379,9 @@ | |||
<available property="jdk1.7+" classname="java.nio.file.FileSystem"/> | |||
<available property="jdk1.8+" classname="java.lang.reflect.Executable"/> | |||
<available property="jdk9+" classname="java.lang.module.ModuleDescriptor"/> | |||
<condition property="jdk10+"> | |||
<javaversion atleast="10"/> | |||
</condition> | |||
<available property="kaffe" classname="kaffe.util.NotImplemented"/> | |||
<available property="harmony" | |||
classname="org.apache.harmony.luni.util.Base64"/> | |||
@@ -1090,5 +1090,44 @@ is redundant and will be ignored.</p> | |||
<file file="${file}"/> | |||
</resourceexists> | |||
</pre></blockquote> | |||
<h4><a name="javaversion">javaversion</a></h4> | |||
<p>Tests the version of the JVM executing Ant. <em>Since Ant | |||
1.9.10</em></p> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<td width="12%" valign="top"><b>Attribute</b></td> | |||
<td width="78%" valign="top"><b>Description</b></td> | |||
<td width="10%" valign="top"><b>Required</b></td> | |||
</tr> | |||
<tr> | |||
<td valign="top">atleast</td> | |||
<td valign="top">The version that this JVM is at least. | |||
The format is major.minor.point. Starting with Java9 really | |||
only the major number is determined.</td> | |||
<td valign="top" align="center">No</td> | |||
<td valign="top" rowspan="2" align="center">One of these.</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">exactly</td> | |||
<td valign="top">The version that this JVM is exactly. | |||
The format is <tt>major.minor.point</tt>. Starting with Java9 really | |||
only the major number is determined.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
</table> | |||
<p> | |||
An example: | |||
</p> | |||
<blockquote><pre> | |||
<javaversion atleast="9"/> | |||
</pre></blockquote> | |||
<p>will evaluate to true if the current JVM is Java9 or above.</p> | |||
</body> | |||
</html> |
@@ -78,9 +78,10 @@ attribute are:</a></p> | |||
<code>javac1.5</code> and | |||
<code>javac1.6</code> and | |||
<code>javac1.7</code> (<em>since Ant 1.8.2</em>) and | |||
<code>javac1.8</code> (<em>since Ant 1.8.3</em>) and</li> | |||
<code>javac1.9</code> (<em>since Ant 1.9.5</em>) and</li> | |||
<code>javac9</code> (<em>since Ant 1.9.8</em>) can be used as aliases.</li> | |||
<code>javac1.8</code> (<em>since Ant 1.8.3</em>) and | |||
<code>javac1.9</code> (<em>since Ant 1.9.5</em>) and | |||
<code>javac9</code> (<em>since Ant 1.9.8</em>) and | |||
<code>javac10+</code> (<em>since Ant 1.9.10</em>) can be used as aliases.</li> | |||
<li><code>jikes</code> (the <a | |||
href="http://jikes.sourceforge.net/" target="_top">Jikes</a> | |||
compiler).</li> | |||
@@ -525,7 +526,7 @@ invoking the compiler.</p> | |||
<tr> | |||
<td valign="top">release</td> | |||
<td valign="top"> | |||
Specify the value for the <code>--release</code> switch.Ignored | |||
Specify the value for the <code>--release</code> switch. Ignored | |||
when running on JDK < 9.<br> | |||
When set and running on JDK >= 9 the source and target | |||
attributes as well as the bootclasspath will be ignored. | |||
@@ -63,6 +63,8 @@ | |||
classname="org.apache.tools.ant.taskdefs.condition.IsSigned"/> | |||
<componentdef name="istrue" onerror="ignore" | |||
classname="org.apache.tools.ant.taskdefs.condition.IsTrue"/> | |||
<componentdef name="javaversion" onerror="ignore" | |||
classname="org.apache.tools.ant.taskdefs.condition.JavaVersion"/> | |||
<componentdef name="matches" onerror="ignore" | |||
classname="org.apache.tools.ant.taskdefs.condition.Matches"/> | |||
<componentdef name="not" onerror="ignore" | |||
@@ -86,6 +86,7 @@ public class Javac extends MatchingTask { | |||
private static final String FAIL_MSG | |||
= "Compile failed; see the compiler error output for details."; | |||
private static final String JAVAC10_PLUS = "javac10+"; | |||
private static final String JAVAC9 = "javac9"; | |||
private static final String JAVAC19 = "javac1.9"; | |||
private static final String JAVAC18 = "javac1.8"; | |||
@@ -170,6 +171,8 @@ public class Javac extends MatchingTask { | |||
return JAVAC17; | |||
} else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_8)) { | |||
return JAVAC18; | |||
} else if (JavaEnvUtils.isAtLeastJavaVersion("10")) { | |||
return JAVAC10_PLUS; | |||
} else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_9)) { | |||
return JAVAC9; | |||
} else { | |||
@@ -219,7 +222,7 @@ public class Javac extends MatchingTask { | |||
* must make sure that your version of jikes supports the -source | |||
* switch.</p> | |||
* | |||
* <p>Legal values are 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, and 5, 6, 7, 8 and 9 | |||
* <p>Legal values are 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, and any integral number bigger than 4 | |||
* - by default, no -source argument will be used at all.</p> | |||
* | |||
* @param v Value to assign to source. | |||
@@ -772,7 +775,7 @@ public class Javac extends MatchingTask { | |||
/** | |||
* Sets the target VM that the classes will be compiled for. Valid | |||
* values depend on the compiler, for jdk 1.4 the valid values are | |||
* "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "5", "6", "7", "8", "9". | |||
* "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9" and any integral number bigger than 4 | |||
* @param target the target VM | |||
*/ | |||
public void setTarget(final String target) { | |||
@@ -962,7 +965,8 @@ public class Javac extends MatchingTask { | |||
} | |||
private String getAltCompilerName(final String anImplementation) { | |||
if (JAVAC9.equalsIgnoreCase(anImplementation) | |||
if (JAVAC10_PLUS.equalsIgnoreCase(anImplementation) | |||
|| JAVAC9.equalsIgnoreCase(anImplementation) | |||
|| JAVAC19.equalsIgnoreCase(anImplementation) | |||
|| JAVAC18.equalsIgnoreCase(anImplementation) | |||
|| JAVAC17.equalsIgnoreCase(anImplementation) | |||
@@ -978,7 +982,8 @@ public class Javac extends MatchingTask { | |||
} | |||
if (MODERN.equalsIgnoreCase(anImplementation)) { | |||
final String nextSelected = assumedJavaVersion(); | |||
if (JAVAC9.equalsIgnoreCase(nextSelected) | |||
if (JAVAC10_PLUS.equalsIgnoreCase(anImplementation) | |||
|| JAVAC9.equalsIgnoreCase(nextSelected) | |||
|| JAVAC18.equalsIgnoreCase(nextSelected) | |||
|| JAVAC17.equalsIgnoreCase(nextSelected) | |||
|| JAVAC16.equalsIgnoreCase(nextSelected) | |||
@@ -1245,11 +1250,12 @@ public class Javac extends MatchingTask { | |||
* @param compilerImpl the name of the compiler implementation | |||
* @return true if compilerImpl is "modern", "classic", | |||
* "javac1.1", "javac1.2", "javac1.3", "javac1.4", "javac1.5", | |||
* "javac1.6", "javac1.7", "javac1.8", "javac1.9" or "javac9". | |||
* "javac1.6", "javac1.7", "javac1.8", "javac1.9", "javac9" or "javac10+". | |||
*/ | |||
protected boolean isJdkCompiler(final String compilerImpl) { | |||
return MODERN.equals(compilerImpl) | |||
|| CLASSIC.equals(compilerImpl) | |||
|| JAVAC10_PLUS.equals(compilerImpl) | |||
|| JAVAC9.equals(compilerImpl) | |||
|| JAVAC18.equals(compilerImpl) | |||
|| JAVAC17.equals(compilerImpl) | |||
@@ -123,7 +123,8 @@ public final class CompilerAdapterFactory { | |||
|| compilerType.equalsIgnoreCase("javac1.7") | |||
|| compilerType.equalsIgnoreCase("javac1.8") | |||
|| compilerType.equalsIgnoreCase("javac1.9") | |||
|| compilerType.equalsIgnoreCase("javac9")) { | |||
|| compilerType.equalsIgnoreCase("javac9") | |||
|| compilerType.equalsIgnoreCase("javac10+")) { | |||
// does the modern compiler exist? | |||
if (doesModernCompilerExist()) { | |||
return new Javac13(); | |||
@@ -323,7 +323,7 @@ public abstract class DefaultCompilerAdapter | |||
cmd.createArgument().setValue("-sourcepath"); | |||
cmd.createArgument().setPath(sourcepath); | |||
} | |||
if (release == null || !assumeJava19()) { | |||
if (release == null || !assumeJava9Plus()) { | |||
if (target != null) { | |||
cmd.createArgument().setValue("-target"); | |||
cmd.createArgument().setValue(target); | |||
@@ -395,7 +395,7 @@ public abstract class DefaultCompilerAdapter | |||
if (!assumeJava13()) { // -source added with JDK 1.4 | |||
final String t = attributes.getTarget(); | |||
final String s = attributes.getSource(); | |||
if (release == null || !assumeJava19()) { | |||
if (release == null || !assumeJava9Plus()) { | |||
if (release != null) { | |||
attributes.log("Support for javac --release has been added" | |||
+ " in Java9 ignoring it"); | |||
@@ -719,6 +719,21 @@ public abstract class DefaultCompilerAdapter | |||
return assumeJava19(); | |||
} | |||
/** | |||
* Shall we assume JDK 9+ command line switches? | |||
* @return true if JDK 9+ | |||
* @since Ant 1.9.10 | |||
*/ | |||
protected boolean assumeJava9Plus() { | |||
return "javac1.9".equals(attributes.getCompilerVersion()) | |||
|| "javac9".equals(attributes.getCompilerVersion()) | |||
|| "javac10+".equals(attributes.getCompilerVersion()) | |||
|| (JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9) && | |||
("classic".equals(attributes.getCompilerVersion()) | |||
|| "modern".equals(attributes.getCompilerVersion()) | |||
|| "extJavac".equals(attributes.getCompilerVersion()))); | |||
} | |||
/** | |||
* Shall we assume command line switches for the given version of Java? | |||
* @since Ant 1.8.3 | |||
@@ -792,7 +807,7 @@ public abstract class DefaultCompilerAdapter | |||
if (assumeJava18()) { | |||
return "1.8 in JDK 1.8"; | |||
} | |||
if (assumeJava9()) { | |||
if (assumeJava9Plus()) { | |||
return "9 in JDK 9"; | |||
} | |||
return ""; | |||
@@ -819,7 +834,7 @@ public abstract class DefaultCompilerAdapter | |||
&& !assumeJava15() && !assumeJava16()) | |||
|| (t.equals("7") && !assumeJava17()) | |||
|| (t.equals("8") && !assumeJava18()) | |||
|| (t.equals("9") && !assumeJava9()); | |||
|| (t.equals("9") && !assumeJava9Plus()); | |||
} | |||
@@ -0,0 +1,115 @@ | |||
/* | |||
* 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. | |||
* | |||
*/ | |||
package org.apache.tools.ant.taskdefs.condition; | |||
import org.apache.tools.ant.BuildException; | |||
import org.apache.tools.ant.util.DeweyDecimal; | |||
import org.apache.tools.ant.util.JavaEnvUtils; | |||
/** | |||
* An Java version condition. | |||
* @since Java 1.9.10 | |||
*/ | |||
public class JavaVersion implements Condition { | |||
private String atLeast = null; | |||
private String exactly = null; | |||
/** | |||
* Evaluate the condition. | |||
* @return true if the condition is true. | |||
* @throws BuildException if an error occurs. | |||
*/ | |||
public boolean eval() throws BuildException { | |||
validate(); | |||
DeweyDecimal actual = JavaEnvUtils.getParsedJavaVersion(); | |||
if (null != atLeast) { | |||
return actual.isGreaterThanOrEqual(new DeweyDecimal(atLeast)); | |||
} | |||
if (null != exactly) { | |||
return actual.isEqual(new DeweyDecimal(exactly)); | |||
} | |||
//default | |||
return false; | |||
} | |||
private void validate() throws BuildException { | |||
if (atLeast != null && exactly != null) { | |||
throw new BuildException("Only one of atleast or exactly may be set."); | |||
} | |||
if (null == atLeast && null == exactly) { | |||
throw new BuildException("One of atleast or exactly must be set."); | |||
} | |||
if (atLeast != null) { | |||
try { | |||
// only created for side effect | |||
new DeweyDecimal(atLeast); //NOSONAR | |||
} catch (NumberFormatException e) { | |||
throw new BuildException( | |||
"The 'atleast' attribute is not a Dewey Decimal eg 1.1.0 : " | |||
+ atLeast); | |||
} | |||
} else { | |||
try { | |||
// only created for side effect | |||
new DeweyDecimal(exactly); //NOSONAR | |||
} catch (NumberFormatException e) { | |||
throw new BuildException( | |||
"The 'exactly' attribute is not a Dewey Decimal eg 1.1.0 : " | |||
+ exactly); | |||
} | |||
} | |||
} | |||
/** | |||
* Get the atleast attribute. | |||
* @return the atleast attribute. | |||
*/ | |||
public String getAtLeast() { | |||
return atLeast; | |||
} | |||
/** | |||
* Set the atleast attribute. | |||
* This is of the form major.minor.point. | |||
* For example 1.7.0. | |||
* @param atLeast the version to check against. | |||
*/ | |||
public void setAtLeast(String atLeast) { | |||
this.atLeast = atLeast; | |||
} | |||
/** | |||
* Get the exactly attribute. | |||
* @return the exactly attribute. | |||
*/ | |||
public String getExactly() { | |||
return exactly; | |||
} | |||
/** | |||
* Set the exactly attribute. | |||
* This is of the form major.minor.point. | |||
* For example 1.7.0. | |||
* @param exactly the version to check against. | |||
*/ | |||
public void setExactly(String exactly) { | |||
this.exactly = exactly; | |||
} | |||
} |
@@ -66,6 +66,8 @@ | |||
classname="org.apache.tools.ant.taskdefs.condition.IsSigned"/> | |||
<typedef name="istrue" onerror="ignore" | |||
classname="org.apache.tools.ant.taskdefs.condition.IsTrue"/> | |||
<typedef name="javaversion" onerror="ignore" | |||
classname="org.apache.tools.ant.taskdefs.condition.JavaVersion"/> | |||
<typedef name="not" onerror="ignore" | |||
classname="org.apache.tools.ant.taskdefs.condition.Not"/> | |||
<typedef name="matches" onerror="ignore" | |||
@@ -29,6 +29,10 @@ import org.apache.tools.ant.taskdefs.condition.Os; | |||
* A set of helper methods related to locating executables or checking | |||
* conditions of a given Java installation. | |||
* | |||
* <p>Starting with Java 10 we've stopped adding <code>JAVA_</code> | |||
* and <code>VERSION_</code> attributes for new major version numbers | |||
* of the JVM.</p> | |||
* | |||
* @since Ant 1.5 | |||
*/ | |||
public final class JavaEnvUtils { | |||
@@ -181,6 +185,10 @@ public final class JavaEnvUtils { | |||
Class.forName("java.lang.module.ModuleDescriptor"); | |||
javaVersion = JAVA_9; | |||
javaVersionNumber = VERSION_9; | |||
// at least Java9 and this should properly support the purely numeric version property | |||
String v = System.getProperty("java.specification.version"); | |||
javaVersionNumber = Integer.parseInt(v) * 10; | |||
javaVersion = v; | |||
} catch (Throwable t) { | |||
// swallow as we've hit the max class version that | |||
// we have | |||
@@ -449,51 +457,45 @@ public final class JavaEnvUtils { | |||
private static void buildJrePackages() { | |||
jrePackages = new Vector<String>(); | |||
switch(javaVersionNumber) { | |||
case VERSION_9: | |||
case VERSION_1_8: | |||
case VERSION_1_7: | |||
jrePackages.addElement("jdk"); | |||
// fall through | |||
case VERSION_1_6: | |||
case VERSION_1_5: | |||
//In Java1.5, the apache stuff moved. | |||
jrePackages.addElement("com.sun.org.apache"); | |||
//fall through. | |||
case VERSION_1_4: | |||
if (javaVersionNumber == VERSION_1_4) { | |||
jrePackages.addElement("org.apache.crimson"); | |||
jrePackages.addElement("org.apache.xalan"); | |||
jrePackages.addElement("org.apache.xml"); | |||
jrePackages.addElement("org.apache.xpath"); | |||
} | |||
jrePackages.addElement("org.ietf.jgss"); | |||
jrePackages.addElement("org.w3c.dom"); | |||
jrePackages.addElement("org.xml.sax"); | |||
// fall through | |||
case VERSION_1_3: | |||
jrePackages.addElement("org.omg"); | |||
jrePackages.addElement("com.sun.corba"); | |||
jrePackages.addElement("com.sun.jndi"); | |||
jrePackages.addElement("com.sun.media"); | |||
jrePackages.addElement("com.sun.naming"); | |||
jrePackages.addElement("com.sun.org.omg"); | |||
jrePackages.addElement("com.sun.rmi"); | |||
jrePackages.addElement("sunw.io"); | |||
jrePackages.addElement("sunw.util"); | |||
// fall through | |||
case VERSION_1_2: | |||
jrePackages.addElement("com.sun.java"); | |||
jrePackages.addElement("com.sun.image"); | |||
// are there any here that we forgot? | |||
// fall through | |||
case VERSION_1_1: | |||
default: | |||
//things like sun.reflection, sun.misc, sun.net | |||
jrePackages.addElement("sun"); | |||
jrePackages.addElement("java"); | |||
jrePackages.addElement("javax"); | |||
break; | |||
if (isAtLeastJavaVersion(JAVA_1_1)) { | |||
//things like sun.reflection, sun.misc, sun.net | |||
jrePackages.addElement("sun"); | |||
jrePackages.addElement("java"); | |||
jrePackages.addElement("javax"); | |||
} | |||
if (isAtLeastJavaVersion(JAVA_1_2)) { | |||
jrePackages.addElement("com.sun.java"); | |||
jrePackages.addElement("com.sun.image"); | |||
// are there any here that we forgot? | |||
} | |||
if (isAtLeastJavaVersion(JAVA_1_3)) { | |||
jrePackages.addElement("org.omg"); | |||
jrePackages.addElement("com.sun.corba"); | |||
jrePackages.addElement("com.sun.jndi"); | |||
jrePackages.addElement("com.sun.media"); | |||
jrePackages.addElement("com.sun.naming"); | |||
jrePackages.addElement("com.sun.org.omg"); | |||
jrePackages.addElement("com.sun.rmi"); | |||
jrePackages.addElement("sunw.io"); | |||
jrePackages.addElement("sunw.util"); | |||
} | |||
if (isAtLeastJavaVersion(JAVA_1_4)) { | |||
if (javaVersionNumber == VERSION_1_4) { | |||
jrePackages.addElement("org.apache.crimson"); | |||
jrePackages.addElement("org.apache.xalan"); | |||
jrePackages.addElement("org.apache.xml"); | |||
jrePackages.addElement("org.apache.xpath"); | |||
} | |||
jrePackages.addElement("org.ietf.jgss"); | |||
jrePackages.addElement("org.w3c.dom"); | |||
jrePackages.addElement("org.xml.sax"); | |||
} | |||
if (isAtLeastJavaVersion(JAVA_1_5)) { | |||
//In Java1.5, the apache stuff moved. | |||
jrePackages.addElement("com.sun.org.apache"); | |||
} | |||
if (isAtLeastJavaVersion(JAVA_1_7)) { | |||
jrePackages.addElement("jdk"); | |||
} | |||
} | |||
@@ -504,52 +506,46 @@ public final class JavaEnvUtils { | |||
public static Vector<String> getJrePackageTestCases() { | |||
Vector<String> tests = new Vector<String>(); | |||
tests.addElement("java.lang.Object"); | |||
switch(javaVersionNumber) { | |||
case VERSION_9: | |||
case VERSION_1_8: | |||
case VERSION_1_7: | |||
tests.addElement("jdk.net.Sockets"); | |||
// fall through | |||
case VERSION_1_6: | |||
case VERSION_1_5: | |||
tests.addElement( | |||
"com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl "); | |||
// Fall through | |||
case VERSION_1_4: | |||
tests.addElement("sun.audio.AudioPlayer"); | |||
if (javaVersionNumber == VERSION_1_4) { | |||
// only for 1.4, not for higher versions which fall through | |||
tests.addElement("org.apache.crimson.parser.ContentModel"); | |||
tests.addElement("org.apache.xalan.processor.ProcessorImport"); | |||
tests.addElement("org.apache.xml.utils.URI"); | |||
tests.addElement("org.apache.xpath.XPathFactory"); | |||
} | |||
tests.addElement("org.ietf.jgss.Oid"); | |||
tests.addElement("org.w3c.dom.Attr"); | |||
tests.addElement("org.xml.sax.XMLReader"); | |||
// fall through | |||
case VERSION_1_3: | |||
tests.addElement("org.omg.CORBA.Any"); | |||
tests.addElement("com.sun.corba.se.internal.corba.AnyImpl"); | |||
tests.addElement("com.sun.jndi.ldap.LdapURL"); | |||
tests.addElement("com.sun.media.sound.Printer"); | |||
tests.addElement("com.sun.naming.internal.VersionHelper"); | |||
tests.addElement("com.sun.org.omg.CORBA.Initializer"); | |||
tests.addElement("sunw.io.Serializable"); | |||
tests.addElement("sunw.util.EventListener"); | |||
// fall through | |||
case VERSION_1_2: | |||
tests.addElement("javax.accessibility.Accessible"); | |||
tests.addElement("sun.misc.BASE64Encoder"); | |||
tests.addElement("com.sun.image.codec.jpeg.JPEGCodec"); | |||
// fall through | |||
case VERSION_1_1: | |||
default: | |||
//things like sun.reflection, sun.misc, sun.net | |||
tests.addElement("sun.reflect.SerializationConstructorAccessorImpl"); | |||
tests.addElement("sun.net.www.http.HttpClient"); | |||
tests.addElement("sun.audio.AudioPlayer"); | |||
break; | |||
if (isAtLeastJavaVersion(JAVA_1_1)) { | |||
//things like sun.reflection, sun.misc, sun.net | |||
tests.addElement("sun.reflect.SerializationConstructorAccessorImpl"); | |||
tests.addElement("sun.net.www.http.HttpClient"); | |||
tests.addElement("sun.audio.AudioPlayer"); | |||
} | |||
if (isAtLeastJavaVersion(JAVA_1_2)) { | |||
tests.addElement("javax.accessibility.Accessible"); | |||
tests.addElement("sun.misc.BASE64Encoder"); | |||
tests.addElement("com.sun.image.codec.jpeg.JPEGCodec"); | |||
} | |||
if (isAtLeastJavaVersion(JAVA_1_3)) { | |||
tests.addElement("org.omg.CORBA.Any"); | |||
tests.addElement("com.sun.corba.se.internal.corba.AnyImpl"); | |||
tests.addElement("com.sun.jndi.ldap.LdapURL"); | |||
tests.addElement("com.sun.media.sound.Printer"); | |||
tests.addElement("com.sun.naming.internal.VersionHelper"); | |||
tests.addElement("com.sun.org.omg.CORBA.Initializer"); | |||
tests.addElement("sunw.io.Serializable"); | |||
tests.addElement("sunw.util.EventListener"); | |||
} | |||
if (isAtLeastJavaVersion(JAVA_1_4)) { | |||
tests.addElement("sun.audio.AudioPlayer"); | |||
if (javaVersionNumber == VERSION_1_4) { | |||
// only for 1.4, not for higher versions | |||
tests.addElement("org.apache.crimson.parser.ContentModel"); | |||
tests.addElement("org.apache.xalan.processor.ProcessorImport"); | |||
tests.addElement("org.apache.xml.utils.URI"); | |||
tests.addElement("org.apache.xpath.XPathFactory"); | |||
} | |||
tests.addElement("org.ietf.jgss.Oid"); | |||
tests.addElement("org.w3c.dom.Attr"); | |||
tests.addElement("org.xml.sax.XMLReader"); | |||
} | |||
if (isAtLeastJavaVersion(JAVA_1_5)) { | |||
tests.addElement( | |||
"com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl"); | |||
} | |||
if (isAtLeastJavaVersion(JAVA_1_7)) { | |||
tests.addElement("jdk.net.Sockets"); | |||
} | |||
return tests; | |||
} | |||
@@ -27,6 +27,9 @@ | |||
<property name="test3.jar" location="${antunit.tmpdir}/test3.jar"/> | |||
<property name="test4.jar" location="${antunit.tmpdir}/test4.jar"/> | |||
<property name="test5.jar" location="${antunit.tmpdir}/test5.jar"/> | |||
<condition property="jdk10+"> | |||
<javaversion atleast="10"/> | |||
</condition> | |||
<available property="jdk9+" classname="java.lang.module.ModuleDescriptor"/> | |||
<available property="jdk1.8+" classname="java.lang.reflect.Executable"/> | |||
<available property="jdk1.7+" classname="java.nio.file.FileSystem"/> | |||
@@ -0,0 +1,40 @@ | |||
<?xml version="1.0"?> | |||
<!-- | |||
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. | |||
--> | |||
<project name="javaversion-test" default="antunit" xmlns:au="antlib:org.apache.ant.antunit"> | |||
<import file="../../antunit-base.xml" /> | |||
<target name="test-atleast"> | |||
<au:assertTrue message="Expected javaversion of ${ant.version} to be at least 1.7.0"> | |||
<!-- Ant 1.9.x requires Java5 at runtime - so this must be true --> | |||
<javaversion atleast="1.5" /> | |||
</au:assertTrue> | |||
</target> | |||
<target name="test-exactly"> | |||
<au:assertTrue message="Expected javaversion of ${ant.java.version}"> | |||
<javaversion exactly="${ant.java.version}" /> | |||
</au:assertTrue> | |||
</target> | |||
<target name="test-atleast-fail"> | |||
<au:assertFalse> | |||
<javaversion atleast="1000.0" /> | |||
</au:assertFalse> | |||
</target> | |||
</project> |
@@ -314,7 +314,14 @@ public class Adapter implements CompilerAdapter { | |||
<delete dir="${javac-dir}/classes"/> | |||
<mkdir dir="${javac-dir}/classes"/> | |||
</sequential> | |||
</target> | |||
<sequential if:set="jdk10+"> | |||
<echo>JDK 10+</echo> | |||
<testJavac source="10" target="10"/> | |||
<delete dir="${javac-dir}/classes"/> | |||
<mkdir dir="${javac-dir}/classes"/> | |||
</sequential> | |||
</target> | |||
<target name="testJavacWithNativeHeaderGeneration" if="jdk1.8+" depends="setup"> | |||
<mkdir dir="${javac-dir}/src/org/example" /> | |||