Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
try to adapt to Java10+ rapidly changing major versions
- Loading branch information
Showing
14 changed files
with
337 additions
and
107 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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 @@ private String assumedJavaVersion() { | |
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 String getSource() { | |
* 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 boolean getVerbose() { | |
/** | ||
* 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 | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
bodewig
Author
Member
|
||
* @param target the target VM | ||
*/ | ||
public void setTarget(final String target) { | ||
|
@@ -962,7 +965,8 @@ public String[] getCurrentCompilerArgs() { | |
} | ||
|
||
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 @@ private String getAltCompilerName(final String anImplementation) { | |
} | ||
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 File[] getFileList() { | |
* @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) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
115 changes: 115 additions & 0 deletions
115
src/main/org/apache/tools/ant/taskdefs/condition/JavaVersion.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
For jdk 1.4? 😄