Author: bodewig
Date: Tue Apr 11 11:19:57 2006
New Revision: 393282

URL: http://svn.apache.org/viewcvs?rev=393282&view=rev
Log:
provide magic properties to control javac

Added:
    ant/core/trunk/docs/manual/javacprops.html   (with props)
Modified:
    ant/core/trunk/WHATSNEW
    ant/core/trunk/docs/manual/CoreTasks/javac.html
    ant/core/trunk/docs/manual/CoreTasks/javadoc.html
    ant/core/trunk/docs/manual/conceptstypeslist.html
    ant/core/trunk/src/main/org/apache/tools/ant/MagicNames.java
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javac.java
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
    ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/JavacTest.java

Modified: ant/core/trunk/WHATSNEW
URL: 
http://svn.apache.org/viewcvs/ant/core/trunk/WHATSNEW?rev=393282&r1=393281&r2=393282&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Tue Apr 11 11:19:57 2006
@@ -376,7 +376,11 @@
   dare not change for fear of breaking complex SQL operations in
   existing files.
 
-* <javadoc>'s packagenames attribute is now optional and default to "*".
+* <javadoc>'s packagenames attribute is now optional and defaults to "*".
+
+* <javac>'s source and target attributes as well as <javadoc>'s source
+  attribute will read default values from the properties
+  ant.build.javac.source and ant.build.javac.target.
 
 Changes from Ant 1.6.4 to Ant 1.6.5
 ===================================

Modified: ant/core/trunk/docs/manual/CoreTasks/javac.html
URL: 
http://svn.apache.org/viewcvs/ant/core/trunk/docs/manual/CoreTasks/javac.html?rev=393282&r1=393281&r2=393282&view=diff
==============================================================================
--- ant/core/trunk/docs/manual/CoreTasks/javac.html (original)
+++ ant/core/trunk/docs/manual/CoreTasks/javac.html Tue Apr 11 11:19:57 2006
@@ -241,7 +241,12 @@
     particular, if you use JDK 1.4+ the generated classes will not be
     usable for a 1.1 Java VM unless you explicitly set this attribute
     to the value 1.1 (which is the default value for JDK 1.1 to
-    1.3).  We highly recommend to always specify this attribute.</b></td>
+    1.3).  We highly recommend to always specify this
+    attribute.</b><br>
+    A default value for this attribute can be provided using the magic
+    <a
+    href="../javacprops.html#target"><code>ant.build.javac.target</code></a>
+    property.</td>
     <td align="center" valign="top">No</td>
   </tr>
   <tr>
@@ -322,7 +327,11 @@
     at all.<br>
     <b>Note that the default value depends on the JVM that is running
     Ant.  We highly recommend to always specify this
-    attribute.</b></td>
+    attribute.</b><br>
+    A default value for this attribute can be provided using the magic
+    <a
+    href="../javacprops.html#source"><code>ant.build.javac.source</code></a>
+    property.</td>
 
     <td align="center" valign="top">No</td>
   </tr>

Modified: ant/core/trunk/docs/manual/CoreTasks/javadoc.html
URL: 
http://svn.apache.org/viewcvs/ant/core/trunk/docs/manual/CoreTasks/javadoc.html?rev=393282&r1=393281&r2=393282&view=diff
==============================================================================
--- ant/core/trunk/docs/manual/CoreTasks/javadoc.html (original)
+++ ant/core/trunk/docs/manual/CoreTasks/javadoc.html Tue Apr 11 11:19:57 2006
@@ -407,7 +407,11 @@
     <td valign="top">Necessary to enable javadoc to handle assertions
     present in J2SE v 1.4 source code. Set this to &quot;1.4&quot; to
     documents code that compiles using <code>&quot;javac -source
-    1.4&quot;</code>.</td>
+    1.4&quot;</code>.<br>
+    A default value for this attribute can be provided using the magic
+    <a
+    href="../javacprops.html#source"><code>ant.build.javac.source</code></a>
+    property.</td>
     <td align="center" valign="top">1.4+</td>
     <td align="center" valign="top">No</td>
   </tr>

Modified: ant/core/trunk/docs/manual/conceptstypeslist.html
URL: 
http://svn.apache.org/viewcvs/ant/core/trunk/docs/manual/conceptstypeslist.html?rev=393282&r1=393281&r2=393282&view=diff
==============================================================================
--- ant/core/trunk/docs/manual/conceptstypeslist.html (original)
+++ ant/core/trunk/docs/manual/conceptstypeslist.html Tue Apr 11 11:19:57 2006
@@ -14,6 +14,7 @@
 <h3>Concepts</h3>
 <a href="clonevm.html">ant.build.clonevm</a><br>
 <a href="sysclasspath.html">build.sysclasspath</a><br>
+<a href="javacprops.html">Ant properties controlling javac</a><br>
 <a href="CoreTasks/common.html">Common Attributes</a><br>
 
 <h3>Core Types</h3>

Added: ant/core/trunk/docs/manual/javacprops.html
URL: 
http://svn.apache.org/viewcvs/ant/core/trunk/docs/manual/javacprops.html?rev=393282&view=auto
==============================================================================
--- ant/core/trunk/docs/manual/javacprops.html (added)
+++ ant/core/trunk/docs/manual/javacprops.html Tue Apr 11 11:19:57 2006
@@ -0,0 +1,39 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="stylesheets/style.css">
+<title>Properties controlling javac</title>
+</head>
+
+<body>
+
+<p>The source and target attributes of <code>&lt;javac&gt;</code>
+don't have any default values for historical reasons.  Since the
+underlying javac compiler's default depends on the JDK you use, you
+may encounter build files that don't explicitly set those attributes
+and that will no longer compile using a newer JDK.  If you cannot
+change the build file, Ant provides two properties that help you
+setting default values for these attributes.  If the attributes have
+been set explicitly, the properties listed here will be ignored.</p>
+
+<h2><a name="source">ant.build.javac.source</a></h2>
+
+<p><em>Since Ant 1.7</em></p>
+
+<p>Provides a default value for <code>&lt;javac&gt;</code>'s and
+<code>&lt;javadoc&gt;</code>'s source attribute.</p>
+
+<h2><a name="target">ant.build.javac.target</a></h2>
+
+<p><em>Since Ant 1.7</em></p>
+
+<p>Provides a default value for <code>&lt;javac&gt;</code>'s target
+attribute.</p>
+
+<hr>
+<p align="center">Copyright &copy; 2006 The Apache Software Foundation. All 
rights
+Reserved.</p>
+</body>
+</html>
+

Propchange: ant/core/trunk/docs/manual/javacprops.html
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: ant/core/trunk/src/main/org/apache/tools/ant/MagicNames.java
URL: 
http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/MagicNames.java?rev=393282&r1=393281&r2=393282&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/MagicNames.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/MagicNames.java Tue Apr 11 
11:19:57 2006
@@ -128,5 +128,21 @@
      */
     public static final String REGEXP_IMPL = "ant.regexp.regexpimpl";
 
+    /**
+     * property that provides the default value for javac's and
+     * javadoc's source attribute.
+     * @since Ant 1.7
+     * Value: [EMAIL PROTECTED]
+     */
+    public static final String BUILD_JAVAC_SOURCE = "ant.build.javac.source";
+
+    /**
+     * property that provides the default value for javac's target
+     * attribute.
+     * @since Ant 1.7
+     * Value: [EMAIL PROTECTED]
+     */
+    public static final String BUILD_JAVAC_TARGET = "ant.build.javac.target";
+
 }
 

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javac.java
URL: 
http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javac.java?rev=393282&r1=393281&r2=393282&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javac.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javac.java Tue Apr 11 
11:19:57 2006
@@ -20,6 +20,7 @@
 import java.io.File;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.MagicNames;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.taskdefs.compilers.CompilerAdapter;
 import org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory;
@@ -161,7 +162,8 @@
      * @return value of source.
      */
     public String getSource() {
-        return source;
+        return source != null
+            ? source : getProject().getProperty(MagicNames.BUILD_JAVAC_SOURCE);
     }
 
     /**
@@ -586,7 +588,9 @@
      * @return the target VM
      */
     public String getTarget() {
-        return targetAttribute;
+        return targetAttribute != null
+            ? targetAttribute
+            : getProject().getProperty(MagicNames.BUILD_JAVAC_TARGET);
     }
 
     /**

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
URL: 
http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javadoc.java?rev=393282&r1=393281&r2=393282&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javadoc.java 
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javadoc.java Tue Apr 
11 11:19:57 2006
@@ -33,6 +33,7 @@
 import java.util.Vector;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.MagicNames;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.ProjectComponent;
 import org.apache.tools.ant.Task;
@@ -1912,9 +1913,11 @@
                 }
             }
 
-            if (source != null) {
+            String sourceArg = source != null ? source 
+                : getProject().getProperty(MagicNames.BUILD_JAVAC_SOURCE);
+            if (sourceArg != null) {
                 toExecute.createArgument().setValue("-source");
-                toExecute.createArgument().setValue(source);
+                toExecute.createArgument().setValue(sourceArg);
             }
 
             if (linksource && doclet == null) {

Modified: 
ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/JavacTest.java
URL: 
http://svn.apache.org/viewcvs/ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/JavacTest.java?rev=393282&r1=393281&r2=393282&view=diff
==============================================================================
--- ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/JavacTest.java 
(original)
+++ ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/JavacTest.java 
Tue Apr 11 11:19:57 2006
@@ -1,5 +1,5 @@
 /*
- * Copyright  2001-2002,2004-2005 The Apache Software Foundation
+ * Copyright  2001-2002,2004-2006 The Apache Software Foundation
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -212,4 +212,33 @@
         assertTrue(adapter instanceof JavacExternal);
     }
 
+    public void testSourceNoDefault() {
+        assertNull(javac.getSource());
+    }
+
+    public void testSourceWithDefault() {
+        project.setNewProperty("ant.build.javac.source", "1.4");
+        assertEquals("1.4", javac.getSource());
+    }
+
+    public void testSourceOverridesDefault() {
+        project.setNewProperty("ant.build.javac.source", "1.4");
+        javac.setSource("1.5");
+        assertEquals("1.5", javac.getSource());
+    }
+
+    public void testTargetNoDefault() {
+        assertNull(javac.getTarget());
+    }
+
+    public void testTargetWithDefault() {
+        project.setNewProperty("ant.build.javac.target", "1.4");
+        assertEquals("1.4", javac.getTarget());
+    }
+
+    public void testTargetOverridesDefault() {
+        project.setNewProperty("ant.build.javac.target", "1.4");
+        javac.setTarget("1.5");
+        assertEquals("1.5", javac.getTarget());
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to