You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2020/05/05 10:11:24 UTC

[ant] 01/01: Merge branch '1.9.x'

This is an automated email from the ASF dual-hosted git repository.

bodewig pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ant.git

commit bc9fed1198acf599173334f5e90a855ea5077fc7
Merge: d591851 45fd589
Author: Stefan Bodewig <bo...@apache.org>
AuthorDate: Tue May 5 12:11:07 2020 +0200

    Merge branch '1.9.x'

 WHATSNEW                                           |  3 ++
 manual/Tasks/rmic.html                             |  5 ++
 src/etc/testcases/taskdefs/rmic/rmic.xml           | 58 ++++++++++++----------
 .../tools/ant/taskdefs/rmic/ForkingSunRmic.java    |  5 ++
 src/tests/antunit/taskdefs/rmic-test.xml           | 22 +++++++-
 .../tools/ant/taskdefs/RmicAdvancedTest.java       | 18 +++++++
 6 files changed, 84 insertions(+), 27 deletions(-)

diff --cc WHATSNEW
index 65c0ce8,55ef289..125def9
--- a/WHATSNEW
+++ b/WHATSNEW
@@@ -50,56 -7,10 +50,59 @@@ Other changes
   * The runant.py script should now work with Python 3.
     Github Pull Request #96
  
 + * tstamp task now honors SOURCE_DATE_EPOCH environment variable for
 +   reproducible builds (https://reproducible-builds.org/specs/source-date-epoch/#idm55)
 +   Bugzilla Report 62617
 +
+  * rmic has been removed from Java 15. The task will now throw an
+    exception if you try to use it while running Java 15 or newer.
+ 
 -Changes from Ant 1.9.13 TO Ant 1.9.14
 +Changes from Ant 1.10.6 TO Ant 1.10.7
 +=====================================
 +
 +Fixed bugs:
 +-----------
 +
 + * FTP still tries checking or entering directories after a timeout
 +   Bugzilla Report 63454
 +
 + * junitlauncher - does not detect failure in @BeforeAll
 +   Bugzilla Report 63479
 +
 + * Error using ant-1.10.6 with jdk8
 +   Bugzilla Report 63457
 +
 + * FTP task no longer duplicates a check for a file being a symlink.
 +   Bugzilla Report 63259
 +
 + * junitlauncher task, when used in fork mode with "<testclasses>",
 +   used to create the wrong number of listeners per test class. This
 +   has now been fixed.
 +   Bugzilla Report 63446
 +
 + * The "legacy-xml" junitlauncher task's listener would not include
 +   @ParameterizedTest testcases in its XML report file. This has now
 +   been fixed.
 +   Bugzilla Report 63680
 +
 +Other changes:
 +--------------
 +
 + * FTP task timeout improvements.
 +   Bugzilla Reports 63252 and 47414
 +
 + * junitlauncher task now supports selecting test classes for execution,
 +   based on the JUnit 5 tags, through the new "includeTags" and
 +   "excludeTags" attributes.
 +
 + * prefer https over http when building ant itself, and in the ant 
 +   documentation and sources
 +
 + * changed the references and Maven coordinates of JavaMail dependency
 +   to Jakarta Mail and thus javax.mail to jakarta.mail - and upgraded
 +   the dependency to 1.6.3.
 +
 +Changes from Ant 1.10.5 TO Ant 1.10.6
  =====================================
  
  Changes that could break older environments:
diff --cc manual/Tasks/rmic.html
index 49a9788,226b54b..c328c58
--- a/manual/Tasks/rmic.html
+++ b/manual/Tasks/rmic.html
@@@ -24,51 -24,60 +24,56 @@@
  
  <body>
  
 -<h2><a name="rmic">Rmic</a></h2>
 +<h2 id="rmic">Rmic</h2>
  <h3>Description</h3>
 -<p>Runs the rmic compiler for a certain class.</p>
 +<p>Runs the <kbd>rmic</kbd> compiler for a certain class.</p>
+ 
 -<p><b>Note</b> <code>rmic</code> has been deprecated as of Java 13 and
++<p><b>Note</b> <kbd>rmic</kbd> has been deprecated as of Java 13 and
+   removed as of Java 15. Trying to use it with Java15 will fail unless
+   you specifiy the execxutable or rmic-adapter explicitly.</p>
+ 
 -<p>Rmic can be run on a single class (as specified with the classname
 -attribute) or a number of classes at once (all classes below base that
 -are neither _Stub nor _Skel classes).  If you want to rmic a single
 -class and this class is a class nested into another class, you have to
 -specify the classname in the form <code>Outer$$Inner</code> instead of
 -<code>Outer.Inner</code>.</p>
 -<p>It is possible to refine the set of files that are being rmiced. This can be
 -done with the <i>includes</i>, <i>includesfile</i>, <i>excludes</i>, <i>excludesfile</i> and <i>defaultexcludes</i>
 -attributes. With the <i>includes</i> or <i>includesfile</i> attribute you specify the files you want to
 -have included by using patterns. The <i>exclude</i> or <i>excludesfile</i> attribute is used to specify
 -the files you want to have excluded. This is also done with patterns. And
 -finally with the <i>defaultexcludes</i> attribute, you can specify whether you
 -want to use default exclusions or not. See the section on <a
 -href="../dirtasks.html#directorybasedtasks">directory based tasks</a>, on how the
 +<p><code>Rmic</code> can be run on a single class (as specified with the classname attribute) or a
 +number of classes at once (all classes below base that are neither <code>_Stub</code>
 +nor <code>_Skel</code> classes).  If you want to <code>rmic</code> a single class and this class is
 +a class nested into another class, you have to specify the classname in the
 +form <code>Outer$$Inner</code> instead of <code>Outer.Inner</code>.</p>
 +<p>It is possible to refine the set of files that are being <code>rmic</code>ed. This can be done
 +with the <var>includes</var>, <var>includesfile</var>, <var>excludes</var>, <var>excludesfile</var>
 +and <var>defaultexcludes</var> attributes. With the <var>includes</var> or <var>includesfile</var>
 +attribute you specify the files you want to have included by using patterns. The <var>exclude</var>
 +or <var>excludesfile</var> attribute is used to specify the files you want to have excluded. This is
 +also done with patterns. And finally with the <var>defaultexcludes</var> attribute, you can specify
 +whether you want to use default exclusions or not. See the section
 +on <a href="../dirtasks.html#directorybasedtasks">directory based tasks</a>, on how the
  inclusion/exclusion of files works, and how to write patterns.</p>
 -<p>This task forms an implicit <a href="../Types/fileset.html">FileSet</a> and
 -supports most attributes of <code>&lt;fileset&gt;</code>
 -(<code>dir</code> becomes <code>base</code>) as well as the nested
 -<code>&lt;include&gt;</code>, <code>&lt;exclude&gt;</code> and
 -<code>&lt;patternset&gt;</code> elements.</p>
 -<p>It is possible to use different compilers. This can be selected
 -with the &quot;build.rmic&quot; property, the <code>compiler</code>
 -attribute. or a nested element.
 -<a name="compilervalues">Here are the choices</a>:</p>
 +<p>This task forms an implicit <a href="../Types/fileset.html">FileSet</a> and supports most
 +attributes of <code>&lt;fileset&gt;</code> (<var>dir</var> becomes <var>base</var>) as well as the
 +nested <code>&lt;include&gt;</code>, <code>&lt;exclude&gt;</code>
 +and <code>&lt;patternset&gt;</code> elements.</p>
 +<p id="compilervalues">It is possible to use different compilers. This can be selected with
 +the <code>build.rmic</code> property, the <var>compiler</var> attribute, or a nested element. Here
 +are the choices:</p>
  <ul>
 -  <li>default -the default compiler (kaffe, sun or forking) for the platform.
 -  <li>sun (the standard compiler of the JDK &lt; JDK 9)</li>
 -  <li>kaffe (the standard compiler of <a href="http://www.kaffe.org" target="_top">Kaffe</a>)</li>
 -  <li>weblogic</li>
 -  <li>forking - the sun compiler forked into a separate process (since
 -    Apache Ant 1.7). Starting with Ant 1.9.8 this is the default when
 -    running on JDK 9+.</li>
 -  <li>xnew - the sun compiler forked into a separate process,
 -      with the -Xnew option (since Ant 1.7).
 -    This is the most reliable way to use -Xnew.
 -    <br></br>JDK9 has removed support for -Xnew and starting with Ant
 -    1.9.8 this option will be rejected by ant when running on JDK9.</li>
 -    <li> "" (empty string). This has the same behaviour as not setting the compiler attribute.
 -    First the value of <tt>build.rmic</tt> is used if defined, and if not, the default
 -    for the platform is chosen. If build.rmic is set to this, you get the default.
 -
 +  <li><q>default</q>&mdash;the default compiler (<q>kaffe</q>, <q>sun</q> or <q>forking</q>) for the
 +    platform.
 +  <li><q>sun</q>&mdash;the standard compiler prior to JDK 9</li>
 +  <li><q>kaffe</q>&mdash;the standard compiler of <a href="https://github.com/kaffe/kaffe"
 +    target="_top">Kaffe</a></li>
 +  <li><q>weblogic</q></li>
 +  <li><q>forking</q>&mdash;(<em>since Apache Ant 1.7</em>) the <q>sun</q> compiler forked into a
 +    separate process.  <em>Since Ant 1.9.8</em>, this is the default when running on JDK 9+.</li>
 +  <li><q>xnew</q>&mdash;(<em>since Ant 1.7</em>) the <q>sun</q> compiler forked into a separate
 +    process, with the <kbd>-Xnew</kbd> option. This is the most reliable way to
 +    use <kbd>-Xnew</kbd>.<br/>JDK 9 has removed support for <kbd>-Xnew</kbd> and <em>since Ant
 +    1.9.8</em> this option will be rejected when running on JDK 9+.</li>
 +  <li><q></q> (empty string). This has the same behaviour as not setting the compiler attribute.
 +    First the value of <code>build.rmic</code> is used if defined, and if not, the default for the
 +    platform is chosen. If <code>build.rmic</code> is set to this, you get the default.</li>
  </ul>
  
 -<p>The <a href="http://dione.zcu.cz/~toman40/miniRMI/">miniRMI</a>
 -project contains a compiler implementation for this task as well,
 -please consult miniRMI's documentation to learn how to use it.</p>
 +<p>The <a href="https://web.archive.org/web/20131225023602/http://dione.zcu.cz/~toman40/miniRMI/"
 +target="_top">miniRMI</a> project contains a compiler implementation for this task as well, please
 +consult miniRMI's documentation to learn how to use it.</p>
  
  <h4>CORBA support</h4>
  
diff --cc src/etc/testcases/taskdefs/rmic/rmic.xml
index 78de800,fe9973e..04b3f4d
--- a/src/etc/testcases/taskdefs/rmic/rmic.xml
+++ b/src/etc/testcases/taskdefs/rmic/rmic.xml
@@@ -212,9 -217,18 +217,12 @@@
      </condition>
      <property name="rmic.compiler" value="sun"/>
      <available property="wlrmic.present" classname="weblogic.rmic"/>
 -    <condition property="rmic6.present">
 -      <and>
 -        <isset property="rmic.present"/>
 -        <available classname="java.util.ServiceLoader"/>
 -      </and>
 -    </condition>
+     <condition property="java15+">
+       <javaversion atleast="15"/>
+     </condition>
    </target>
  
-   <target name="testDefault" depends="init">
+   <target name="testDefault" depends="init" unless="java15+">
      <base-rmic compiler="default" listfiles="true"/>
      <assertBaseCompiled/>
    </target>
diff --cc src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java
index ca23c82,4ca4fe2..3b78b81
--- a/src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java
+++ b/src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java
@@@ -228,15 -232,16 +228,17 @@@ public class RmicAdvancedTest 
       * A unit test for JUnit
       */
      @Test
 -    public void testDefaultBadClass() throws Exception {
 -        Assume.assumeFalse(JavaEnvUtils.isAtLeastJavaVersion("15"));
 +    public void testDefaultBadClass() {
++        assumeFalse("Current system is Java 15 or newer",
++                    JavaEnvUtils.isAtLeastJavaVersion("15"));
 +        thrown.expect(BuildException.class);
 +        thrown.expectMessage(Rmic.ERROR_RMIC_FAILED);
          try {
              buildRule.executeTarget("testDefaultBadClass");
 -            fail("expected the class to fail");
 -        } catch(BuildException ex) {
 -            AntAssert.assertContains(Rmic.ERROR_RMIC_FAILED, ex.getMessage());
 +        } finally {
 +            // don't look for much text here as it is vendor and version dependent
 +            assertThat(buildRule.getLog(), containsString("unimplemented.class"));
          }
 -        //dont look for much text here as it is vendor and version dependent
 -        AntAssert.assertContains("unimplemented.class", buildRule.getLog());
      }
  
      /**
@@@ -331,15 -356,14 +333,17 @@@
      }
  
      /**
 -     * test that passes -Xnew to sun's rmic.
 -     *
 -     * @throws Exception
 +     * test that passes -Xnew to sun's rmic running in a different VM.
       */
      @Test
 -    public void testXnewDest() throws Exception {
 -        // skipped via unless attribute for JDK > 6
 -        buildRule.executeTarget("testXnewDest");
 +    public void testXnewForkedJava9plus() {
 +        assumeTrue("Current system is Java 8 or older",
 +                JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9));
++        assumeFalse("Current system is Java 15 or newer",
++                    JavaEnvUtils.isAtLeastJavaVersion("15"));
 +        thrown.expect(BuildException.class);
 +        thrown.expectMessage("JDK9 has removed support for -Xnew");
 +        buildRule.executeTarget("testXnewForked");
      }
  
      /**
@@@ -354,36 -378,12 +358,40 @@@
  
      /**
       * test that passes -Xnew to sun's rmic running in a different VM.
 -     *
 -     * @throws Exception if something goes wrong
       */
      @Test
 -    public void testXnewForkedDest() throws Exception {
 -        xnewTest("testXnewForkedDest");
 +    public void testXnewForkedDestJava9plus() {
 +        assumeTrue("Current system is Java 8 or older",
 +                JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9));
++        assumeFalse("Current system is Java 15 or newer",
++                    JavaEnvUtils.isAtLeastJavaVersion("15"));
 +        thrown.expect(BuildException.class);
 +        thrown.expectMessage("JDK9 has removed support for -Xnew");
 +        buildRule.executeTarget("testXnewForkedDest");
 +    }
 +
 +    /**
 +     * test that runs the new xnew compiler adapter.
 +     */
 +    @Test
 +    public void testXnewCompiler() {
 +        assumeFalse("Current system is Java 9 or newer",
 +                JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9));
 +        buildRule.executeTarget("testXnewCompiler");
 +    }
 +
 +    /**
 +     * test that runs the new xnew compiler adapter.
 +     */
 +    @Test
 +    public void testXnewCompilerJava9plus() {
 +        assumeTrue("Current system is Java 8 or older",
 +                JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9));
++        assumeFalse("Current system is Java 15 or newer",
++                JavaEnvUtils.isAtLeastJavaVersion("15"));
 +        thrown.expect(BuildException.class);
 +        thrown.expectMessage("JDK9 has removed support for -Xnew");
 +        buildRule.executeTarget("testXnewCompiler");
      }
  
      /**
@@@ -398,34 -398,22 +406,38 @@@
  
      /**
       * test that runs the new xnew compiler adapter.
 -     *
 -     * @throws Exception if something goes wrong
       */
      @Test
 -    public void testXnewCompilerDest() throws Exception {
 -        xnewTest("testXnewCompilerDest");
 +    public void testXnewCompilerDestJava9plus() {
 +        assumeTrue("Current system is Java 8 or older",
 +                JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9));
++        assumeFalse("Current system is Java 15 or newer",
++                JavaEnvUtils.isAtLeastJavaVersion("15"));
 +        thrown.expect(BuildException.class);
 +        thrown.expectMessage("JDK9 has removed support for -Xnew");
 +        buildRule.executeTarget("testXnewCompilerDest");
 +    }
 +
 +    /**
 +     * test that verifies that IDL compiles.
 +     */
 +    @Test
 +    public void testIDL() {
 +        assumeFalse("Current system is Java 11 or newer", JavaEnvUtils.isAtLeastJavaVersion("11"));
 +        buildRule.executeTarget("testIDL");
      }
  
      /**
       * test that verifies that IDL compiles.
 -     *
 -     * @throws Exception if something goes wrong
       */
      @Test
 -    public void testIDL() throws Exception {
 -        corbaTest("testIDL");
 +    public void testIDLJava11plus() {
 +        assumeTrue("Current system is Java 10 or older", JavaEnvUtils.isAtLeastJavaVersion("11"));
++        assumeFalse("Current system is Java 15 or newer",
++                JavaEnvUtils.isAtLeastJavaVersion("15"));
 +        thrown.expect(BuildException.class);
 +        thrown.expectMessage("this rmic implementation doesn't support the -idl switch");
 +        buildRule.executeTarget("testIDL");
      }
  
      /**
@@@ -438,54 -427,57 +450,60 @@@
      }
  
      /**
 +     * test that verifies that IDL compiles.
 +     */
 +    @Test
 +    public void testIDLDestJava11plus() {
 +        assumeTrue("Current system is Java 10 or older", JavaEnvUtils.isAtLeastJavaVersion("11"));
++        assumeFalse("Current system is Java 15 or newer",
++                JavaEnvUtils.isAtLeastJavaVersion("15"));
 +        thrown.expect(BuildException.class);
 +        thrown.expectMessage("this rmic implementation doesn't support the -idl switch");
 +        buildRule.executeTarget("testIDL");
 +   }
 +
 +    /**
       * test that verifies that IIOP compiles.
 -     *
 -     * @throws Exception if something goes wrong
       */
      @Test
 -    public void testIIOP() throws Exception {
 -        corbaTest("testIIOP");
 +    public void testIIOP() {
 +        assumeFalse("Current system is Java 11 or newer", JavaEnvUtils.isAtLeastJavaVersion("11"));
 +        buildRule.executeTarget("testIIOP");
      }
  
      /**
       * test that verifies that IIOP compiles.
 -     *
 -     * @throws Exception if something goes wrong
 -     */
 -    @Test
 -    public void testIIOPDest() throws Exception {
 -        corbaTest("testIIOPDest");
 -    }
 -
 -    private void xnewTest(String target) {
 -        if (!JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)
 -            || JavaEnvUtils.isAtLeastJavaVersion("15")) {
 -            // target is skipped with Java 15+
 -            buildRule.executeTarget(target);
 -        } else {
 -            try {
 -                buildRule.executeTarget(target);
 -                fail("Target should have thrown a BuildException");
 -            } catch (BuildException ex) {
 -                assertEquals("JDK9 has removed support for -Xnew", ex.getMessage());
 -            }
 -        }
 +     */
 +    @Test
 +    public void testIIOPJava11plus() {
 +        assumeTrue("Current system is Java 10 or older", JavaEnvUtils.isAtLeastJavaVersion("11"));
++        assumeFalse("Current system is Java 15 or newer",
++                JavaEnvUtils.isAtLeastJavaVersion("15"));
 +        thrown.expect(BuildException.class);
 +        thrown.expectMessage("this rmic implementation doesn't support the -iiop switch");
 +        buildRule.executeTarget("testIIOP");
      }
  
 -    private void corbaTest(String target) {
 -        if (!JavaEnvUtils.isAtLeastJavaVersion("11")
 -            || JavaEnvUtils.isAtLeastJavaVersion("15")) {
 -            // target is skipped with Java 15+
 -            buildRule.executeTarget(target);
 -        } else {
 -            try {
 -                buildRule.executeTarget(target);
 -                fail("Target should have thrown a BuildException");
 -            } catch (BuildException ex) {
 -                if (target.contains("IDL")) {
 -                    assertEquals("this rmic implementation doesn't support the -idl switch", ex.getMessage());
 -                } else {
 -                    assertEquals("this rmic implementation doesn't support the -iiop switch", ex.getMessage());
 -                }
 -            }
 -        }
 +    /**
 +     * test that verifies that IIOP compiles.
 +     */
 +    @Test
 +    public void testIIOPDest() {
 +        assumeFalse("Current system is Java 11 or newer", JavaEnvUtils.isAtLeastJavaVersion("11"));
 +        buildRule.executeTarget("testIIOPDest");
 +    }
 +
 +    /**
 +     * test that verifies that IIOP compiles.
 +     */
 +    @Test
 +    public void testIIOPDestJava11plus() {
 +        assumeTrue("Current system is Java 10 or older", JavaEnvUtils.isAtLeastJavaVersion("11"));
++        assumeFalse("Current system is Java 15 or newer",
++                JavaEnvUtils.isAtLeastJavaVersion("15"));
 +        thrown.expect(BuildException.class);
 +        thrown.expectMessage("this rmic implementation doesn't support the -iiop switch");
 +        buildRule.executeTarget("testIIOP");
      }
  
      /**