Browse Source

add an option to suppress the artifical package-info.class files created by <javac>. PR 52096

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1190243 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 13 years ago
parent
commit
5ecf92bf58
4 changed files with 49 additions and 1 deletions
  1. +6
    -1
      WHATSNEW
  2. +16
    -0
      manual/Tasks/javac.html
  3. +15
    -0
      src/main/org/apache/tools/ant/taskdefs/Javac.java
  4. +12
    -0
      src/tests/antunit/taskdefs/javac-test.xml

+ 6
- 1
WHATSNEW View File

@@ -134,7 +134,12 @@ Other changes:
property hasn't been set when the resource was empty even if the property hasn't been set when the resource was empty even if the
quiet attribute was set to true. They will now use VERBOSE quiet attribute was set to true. They will now use VERBOSE
instead. instead.
Bugzilla Report 52107.
Bugzilla Report 52107.

* <javac> has a new attribute createMissingPackageInfoClass that can
be set to false to prevent Ant from creating empty dummy classes
used for up-to-date-ness checks.
Bugzilla Report 52096.


Changes from Ant 1.8.1 TO Ant 1.8.2 Changes from Ant 1.8.1 TO Ant 1.8.2
=================================== ===================================


+ 16
- 0
manual/Tasks/javac.html View File

@@ -441,6 +441,22 @@ invoking the compiler.</p>
</td> </td>
<td align="center" valign="top">No - default is "true"</td> <td align="center" valign="top">No - default is "true"</td>
</tr> </tr>
<tr>
<td valign="top">createMissingPackageInfoClass</td>
<td valign="top">
Some package level annotations in <code>package-info.java</code>
files don't create any <code>package-info.class</code> files so
Ant would recompile the same file every time.<br/>
Starting with Ant 1.8 Ant will create an
empty <code>package-info.class</code> for
each <code>package-info.java</code> if there isn't one created
by the compiler.<br/>
In some setups this additional class causes problems and it can
be suppressed by setting this attribute to "false".
<em>Since Ant 1.8.3</em>.
</td>
<td align="center" valign="top">No - default is "true"</td>
</tr>
</table> </table>


<h3>Parameters specified as nested elements</h3> <h3>Parameters specified as nested elements</h3>


+ 15
- 0
src/main/org/apache/tools/ant/taskdefs/Javac.java View File

@@ -131,6 +131,8 @@ public class Javac extends MatchingTask {
private boolean includeDestClasses = true; private boolean includeDestClasses = true;
private CompilerAdapter nestedAdapter = null; private CompilerAdapter nestedAdapter = null;


private boolean createMissingPackageInfoClass = true;

/** /**
* Javac task for compilation of Java files. * Javac task for compilation of Java files.
*/ */
@@ -884,6 +886,17 @@ public class Javac extends MatchingTask {
nestedAdapter = adapter; nestedAdapter = adapter;
} }


/**
* Whether package-info.class files will be created by Ant
* matching package-info.java files that have been compiled but
* didn't create class files themselves.
*
* @since Ant 1.8.3
*/
public void setCreateMissingPackageInfoClass(boolean b) {
createMissingPackageInfoClass = b;
}

/** /**
* Executes the task. * Executes the task.
* @exception BuildException if an error occurs * @exception BuildException if an error occurs
@@ -1133,6 +1146,7 @@ public class Javac extends MatchingTask {
// finally, lets execute the compiler!! // finally, lets execute the compiler!!
if (adapter.execute()) { if (adapter.execute()) {
// Success // Success
if (createMissingPackageInfoClass) {
try { try {
generateMissingPackageInfoClasses(destDir != null generateMissingPackageInfoClasses(destDir != null
? destDir ? destDir
@@ -1142,6 +1156,7 @@ public class Javac extends MatchingTask {
// Should this be made a nonfatal warning? // Should this be made a nonfatal warning?
throw new BuildException(x, getLocation()); throw new BuildException(x, getLocation());
} }
}
} else { } else {
// Fail path // Fail path
this.taskSuccess = false; this.taskSuccess = false;


+ 12
- 0
src/tests/antunit/taskdefs/javac-test.xml View File

@@ -139,6 +139,18 @@
<au:assertPropertyEquals name="third-pass" value="true" /> <au:assertPropertyEquals name="third-pass" value="true" />
</target> </target>


<target name="testSuppressPackageInfoClass"
depends="setUpForPackageInfoJava"
description="https://issues.apache.org/bugzilla/show_bug.cgi?id=52096">
<au:assertFileExists file="${build-dir}/a/package-info.class"/>
<delete file="${build-dir}/a/package-info.class"/>
<javac srcdir="${javac-dir}/src" destdir="${build-dir}"
createMissingPackageInfoClass="false"
updatedProperty="second-pass" />
<au:assertPropertyEquals name="second-pass" value="true" />
<au:assertFileDoesntExist file="${build-dir}/a/package-info.class"/>
</target>

<target name="-create-javac-adapter"> <target name="-create-javac-adapter">
<property name="adapter.dir" location="${output}/adapter" /> <property name="adapter.dir" location="${output}/adapter" />
<mkdir dir="${input}/org/example" /> <mkdir dir="${input}/org/example" />


Loading…
Cancel
Save