tag Ant 1.8.3
git-svn-id: https://svn.apache.org/repos/asf/ant/core/tags/ANT_183@1293668 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/STATUS b/STATUS
index 84cb9b4..91be2ce 100644
--- a/STATUS
+++ b/STATUS
@@ -2,9 +2,9 @@
Last modified at 2010-07-20
Release:
- Current: 1.8.1 (in SVN Tag: ANT_181)
- Maintenance: -
- Development: 1.8.2 (in SVN Branch: trunk)
+ Current: 1.8.3 (in SVN Tag: ANT_183)
+ Maintenance: 1.8.x (in SVN Branch: ANT_18_BRANCH)
+ Development: 1.8.4 (in SVN Branch: ANT_18_BRANCH)
Assets:
DNS: ant.apache.org
diff --git a/WHATSNEW b/WHATSNEW
index f82e28f..be286c4 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -112,7 +112,7 @@
Bugzilla Report 51086.
* the attributes of macrodef tasks had their values run through
- property expansion twice.
+ property expansion twice. Still true by default, but can be disabled.
Bugzilla Report 42046.
* jvc doesn't like it if source file names in argument files are
diff --git a/manual/Tasks/junit.html b/manual/Tasks/junit.html
index e7ff67c..c6ab95a 100644
--- a/manual/Tasks/junit.html
+++ b/manual/Tasks/junit.html
@@ -62,7 +62,7 @@
</li>
</ol>
<p>
-See <a href="../../faq.html#delegating-classloader" target="_top">the
+See <a href="http://ant.apache.org/faq.html#delegating-classloader" target="_top">the
FAQ</a> for details.
</p>
diff --git a/manual/Tasks/macrodef.html b/manual/Tasks/macrodef.html
index b2d53e6..8e60158 100644
--- a/manual/Tasks/macrodef.html
+++ b/manual/Tasks/macrodef.html
@@ -128,6 +128,15 @@
</td>
<td valign="top" align="center">No</td>
</tr>
+ <tr>
+ <td valign="top">doubleexpanding</td>
+ <td valign="top">
+ Controls whether or not property references in the attribute are expanded twice or just once.
+ See the <a href="http://ant.apache.org/faq.html#macrodef-property-expansion">FAQ</a> for details.
+ <em>since Ant 1.8.3</em>
+ </td>
+ <td valign="top" align="center">No; default true</td>
+ </tr>
</table>
<h4>element</h4>
<p>
diff --git a/manual/Types/mapper.html b/manual/Types/mapper.html
index d84de62..5aff311 100644
--- a/manual/Types/mapper.html
+++ b/manual/Types/mapper.html
@@ -460,7 +460,7 @@
</table>
<blockquote><pre>
<mapper type="regexp" from="^(.*)\.(.*)$$" to="\2.\1"/>
-<regexpmapper from="^(.*)\.(.*)$$&" to="\2.\1"/>
+<regexpmapper from="^(.*)\.(.*)$$" to="\2.\1"/>
</pre></blockquote>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
diff --git a/manual/listeners.html b/manual/listeners.html
index 2f5e575..4f04724 100644
--- a/manual/listeners.html
+++ b/manual/listeners.html
@@ -116,6 +116,11 @@
<td width="34%">BuildLogger</td>
</tr>
<tr>
+ <td width="33%"><code><a href="#SimpleBigProjectLogger">org.apache.tools.ant.listener.SimpleBigProjectLogger</a></code></td>
+ <td width="33%">Prints the project name for subprojects only, otherwise like NoBannerLogger <em>Since Ant 1.8.1</em></td>
+ <td width="34%">BuildLogger</td>
+ </tr>
+ <tr>
<td width="33%"><code><a href="#ProfileLogger">org.apache.tools.ant.listener.ProfileLogger</a></code></td>
<td width="33%">The default logger, with start times, end times and
durations added for each task and target.</td>
@@ -482,7 +487,35 @@
<code>ant -logger org.apache.tools.ant.listener.BigProjectLogger</code>
</blockquote>
+<h3><a name="SimpleBigProjectLogger">SimpleBigProjectLogger</a></h3>
+<p>Like <code>BigProjectLogger</code>, project-qualified target names are printed,
+useful for big builds with subprojects.
+Otherwise it is as quiet as <code>NoBannerLogger</code>:</p>
+<pre>
+Buildfile: /sources/myapp/build.xml
+myapp-lib.compile:
+Created dir: /sources/myapp/lib/build/classes
+Compiling 1 source file to /sources/myapp/lib/build/classes
+
+myapp-lib.jar:
+Building jar: /sources/myapp/lib/build/lib.jar
+
+myapp.compile:
+Created dir: /sources/myapp/build/classes
+Compiling 2 source files to /sources/myapp/build/classes
+
+myapp.jar:
+Building jar: /sources/myapp/build/myapp.jar
+
+BUILD SUCCESSFUL
+Total time: 1 second
+</pre>
+<p><b>since Ant 1.8.1</b></p>
+<p>To use this listener, use the command:</p>
+<blockquote>
+<code>ant -logger org.apache.tools.ant.listener.SimpleBigProjectLogger</code>
+</blockquote>
<h3><a name="ProfileLogger">ProfileLogger</a></h3>
<p>This logger stores the time needed for executing a task, target and the whole build and prints
diff --git a/release/ivy.xml b/release/ivy.xml
index f65564a..9bc9727 100644
--- a/release/ivy.xml
+++ b/release/ivy.xml
@@ -21,137 +21,143 @@
"http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="org/apache"
module="ant" revision="1.8.3"/>
- <publications>
+ <publications xmlns:e="urn:ant.apache.org:ivy-extras">
<artifact name="ant-parent" type="pom" ext="pom"/>
<artifact name="ant-parent" type="pom.asc" ext="pom.asc"/>
<artifact name="ant" type="pom" ext="pom"/>
<artifact name="ant" type="pom.asc" ext="pom.asc"/>
<artifact name="ant" type="jar" ext="jar"/>
<artifact name="ant" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant" type="sources.asc" ext="jar.asc" classifier="sources" />
- <artifact name="ant" type="javadocs" ext="jar" classifier="javadocs" />
- <artifact name="ant" type="javadocs.asc" ext="jar.asc" classifier="javadocs" />
+ <artifact name="ant" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant" type="source.asc" ext="jar.asc" e:classifier="sources" />
+ <artifact name="ant" type="javadoc" ext="jar" e:classifier="javadoc" />
+ <artifact name="ant" type="javadoc.asc" ext="jar.asc" e:classifier="javadoc" />
<artifact name="ant-antlr" type="pom" ext="pom"/>
<artifact name="ant-antlr" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-antlr" type="jar" ext="jar"/>
<artifact name="ant-antlr" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-antlr" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-antlr" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-antlr" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-antlr" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-apache-bcel" type="pom" ext="pom"/>
<artifact name="ant-apache-bcel" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-apache-bcel" type="jar" ext="jar"/>
<artifact name="ant-apache-bcel" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-apache-bcel" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-apache-bcel" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-apache-bcel" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-apache-bcel" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-apache-bsf" type="pom" ext="pom"/>
<artifact name="ant-apache-bsf" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-apache-bsf" type="jar" ext="jar"/>
<artifact name="ant-apache-bsf" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-apache-bsf" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-apache-bsf" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-apache-bsf" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-apache-bsf" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-apache-log4j" type="pom" ext="pom"/>
<artifact name="ant-apache-log4j" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-apache-log4j" type="jar" ext="jar"/>
<artifact name="ant-apache-log4j" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-apache-log4j" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-apache-log4j" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-apache-log4j" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-apache-log4j" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-apache-oro" type="pom" ext="pom"/>
<artifact name="ant-apache-oro" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-apache-oro" type="jar" ext="jar"/>
<artifact name="ant-apache-oro" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-apache-oro" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-apache-oro" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-apache-oro" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-apache-oro" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-apache-regexp" type="pom" ext="pom"/>
<artifact name="ant-apache-regexp" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-apache-regexp" type="jar" ext="jar"/>
<artifact name="ant-apache-regexp" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-apache-regexp" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-apache-regexp" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-apache-regexp" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-apache-regexp" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-apache-resolver" type="pom" ext="pom"/>
<artifact name="ant-apache-resolver" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-apache-resolver" type="jar" ext="jar"/>
<artifact name="ant-apache-resolver" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-apache-resolver" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-apache-resolver" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-apache-resolver" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-apache-resolver" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-apache-xalan2" type="pom" ext="pom"/>
<artifact name="ant-apache-xalan2" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-apache-xalan2" type="jar" ext="jar"/>
<artifact name="ant-apache-xalan2" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-apache-xalan2" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-apache-xalan2" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-apache-xalan2" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-apache-xalan2" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-commons-logging" type="pom" ext="pom"/>
<artifact name="ant-commons-logging" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-commons-logging" type="jar" ext="jar"/>
<artifact name="ant-commons-logging" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-commons-logging" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-commons-logging" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-commons-logging" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-commons-logging" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-commons-net" type="pom" ext="pom"/>
<artifact name="ant-commons-net" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-commons-net" type="jar" ext="jar"/>
<artifact name="ant-commons-net" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-commons-net" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-commons-net" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-commons-net" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-commons-net" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-jai" type="pom" ext="pom"/>
<artifact name="ant-jai" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-jai" type="jar" ext="jar"/>
<artifact name="ant-jai" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-jai" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-jai" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-jai" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-jai" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-javamail" type="pom" ext="pom"/>
<artifact name="ant-javamail" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-javamail" type="jar" ext="jar"/>
<artifact name="ant-javamail" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-javamail" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-javamail" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-javamail" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-javamail" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-jdepend" type="pom" ext="pom"/>
<artifact name="ant-jdepend" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-jdepend" type="jar" ext="jar"/>
<artifact name="ant-jdepend" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-jdepend" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-jdepend" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-jdepend" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-jdepend" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-jmf" type="pom" ext="pom"/>
<artifact name="ant-jmf" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-jmf" type="jar" ext="jar"/>
<artifact name="ant-jmf" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-jmf" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-jmf" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-jmf" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-jmf" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-jsch" type="pom" ext="pom"/>
<artifact name="ant-jsch" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-jsch" type="jar" ext="jar"/>
<artifact name="ant-jsch" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-jsch" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-jsch" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-jsch" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-jsch" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-junit" type="pom" ext="pom"/>
<artifact name="ant-junit" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-junit" type="jar" ext="jar"/>
<artifact name="ant-junit" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-junit" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-junit" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-junit" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-junit" type="source.asc" ext="jar.asc" e:classifier="sources" />
+ <artifact name="ant-junit4" type="pom" ext="pom"/>
+ <artifact name="ant-junit4" type="pom.asc" ext="pom.asc"/>
+ <artifact name="ant-junit4" type="jar" ext="jar"/>
+ <artifact name="ant-junit4" type="jar.asc" ext="jar.asc"/>
+ <artifact name="ant-junit4" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-junit4" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-launcher" type="pom" ext="pom"/>
<artifact name="ant-launcher" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-launcher" type="jar" ext="jar"/>
<artifact name="ant-launcher" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-launcher" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-launcher" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-launcher" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-launcher" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-netrexx" type="pom" ext="pom"/>
<artifact name="ant-netrexx" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-netrexx" type="jar" ext="jar"/>
<artifact name="ant-netrexx" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-netrexx" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-netrexx" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-netrexx" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-netrexx" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-swing" type="pom" ext="pom"/>
<artifact name="ant-swing" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-swing" type="jar" ext="jar"/>
<artifact name="ant-swing" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-swing" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-swing" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-swing" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-swing" type="source.asc" ext="jar.asc" e:classifier="sources" />
<artifact name="ant-testutil" type="pom" ext="pom"/>
<artifact name="ant-testutil" type="pom.asc" ext="pom.asc"/>
<artifact name="ant-testutil" type="jar" ext="jar"/>
<artifact name="ant-testutil" type="jar.asc" ext="jar.asc"/>
- <artifact name="ant-testutil" type="sources" ext="jar" classifier="sources" />
- <artifact name="ant-testutil" type="sources.asc" ext="jar.asc" classifier="sources" />
+ <artifact name="ant-testutil" type="source" ext="jar" e:classifier="sources" />
+ <artifact name="ant-testutil" type="source.asc" ext="jar.asc" e:classifier="sources" />
</publications>
<dependencies/>
</ivy-module>
diff --git a/release/ivysettings.xml b/release/ivysettings.xml
index 19a10fa..d40c461 100644
--- a/release/ivysettings.xml
+++ b/release/ivysettings.xml
@@ -20,7 +20,7 @@
<resolvers>
<ibiblio name="public" m2compatible="true"/>
<url name="nexus">
- <artifact pattern="${upload.url}/[organisation]/[module]/[artifact]/[revision]/[artifact]-[revision].[ext]" />
+ <artifact pattern="${upload.url}/[organisation]/[module]/[artifact]/[revision]/[artifact]-[revision](-[classifier]).[ext]" />
</url>
</resolvers>
<modules>
diff --git a/release/signit.xml b/release/signit.xml
index 81d0ddd..a5b9f4c 100644
--- a/release/signit.xml
+++ b/release/signit.xml
@@ -1,45 +1,49 @@
-<?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="signit">
- <!-- use this property file to enter your default key id -->
- <property file="${user.home}/gnupg.properties"/>
- <taskdef resource="org/apache/commons/openpgp/ant/antlib.xml">
- <classpath>
- <pathelement
- location="${user.home}/.m2/repository/org/bouncycastle/bcprov-jdk12/130/bcprov-jdk12-130.jar"/>
- <pathelement
- location="${user.home}/.m2/repository/org/apache/commons/commons-openpgp/1.0-SNAPSHOT/commons-openpgp-1.0-SNAPSHOT.jar"/>
- <pathelement
- location="${user.home}/.m2/repository/org/bouncycastle/bcpg-jdk12/130/bcpg-jdk12-130.jar"/>
- </classpath>
- </taskdef>
- <signer secring="${user.home}/AppData/Roaming/gnupg/secring.gpg"
- pubring="${user.home}/AppData/Roaming/gnupg/pubring.gpg" password="${password}" keyid="${keyid}">
- <fileset dir="../java-repository">
- <include name="**/*.jar"/>
- <include name="**/*.pom"/>
- </fileset>
- <fileset dir="../distribution">
- <include name="**/*.bz2"/>
- <include name="**/*.zip"/>
- <include name="**/*.gz"/>
- </fileset>
- </signer>
-
-</project>
+<?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="signit">
+ <!-- use this property file to enter your default key id -->
+ <property file="${user.home}/gnupg.properties"/>
+ <taskdef resource="org/apache/commons/openpgp/ant/antlib.xml">
+ <classpath>
+ <pathelement
+ location="${user.home}/.m2/repository/org/bouncycastle/bcprov-jdk12/130/bcprov-jdk12-130.jar"/>
+ <pathelement
+ location="${user.home}/.m2/repository/org/apache/commons/commons-openpgp/1.0-SNAPSHOT/commons-openpgp-1.0-SNAPSHOT.jar"/>
+ <pathelement
+ location="${user.home}/.m2/repository/org/bouncycastle/bcpg-jdk12/130/bcpg-jdk12-130.jar"/>
+ </classpath>
+ </taskdef>
+ <condition property="gpg.dir" value="${user.home}/AppData/Roaming/gnupg">
+ <os family="windows"/>
+ </condition>
+ <property name="gpg.dir" location="${user.home}/.gnupg"/>
+ <signer secring="${gpg.dir}/secring.gpg"
+ pubring="${gpg.dir}/pubring.gpg" password="${password}" keyid="${keyid}">
+ <fileset dir="../java-repository">
+ <include name="**/*.jar"/>
+ <include name="**/*.pom"/>
+ </fileset>
+ <fileset dir="../distribution">
+ <include name="**/*.bz2"/>
+ <include name="**/*.zip"/>
+ <include name="**/*.gz"/>
+ </fileset>
+ </signer>
+
+</project>
diff --git a/src/etc/testcases/taskdefs/conditions/antversion.xml b/src/etc/testcases/taskdefs/conditions/antversion.xml
index a9d8dd0..2d9d324 100644
--- a/src/etc/testcases/taskdefs/conditions/antversion.xml
+++ b/src/etc/testcases/taskdefs/conditions/antversion.xml
@@ -45,10 +45,10 @@
<fail>
<condition>
<not>
- <antversion atleast="1.9.0" />
+ <antversion atleast="1.8.3" />
</not>
</condition>
- Should be at least 1.9.0
+ Should be at least 1.8.3
</fail>
</target>
@@ -57,10 +57,10 @@
<fail>
<condition>
<not>
- <antversion exactly="1.9.0" />
+ <antversion exactly="1.8.3" />
</not>
</condition>
- Should be exactly 1.9.0
+ Should be exactly 1.8.3
</fail>
</target>
</project>
diff --git a/src/main/org/apache/tools/ant/RuntimeConfigurable.java b/src/main/org/apache/tools/ant/RuntimeConfigurable.java
index a33c7e4..6314326 100644
--- a/src/main/org/apache/tools/ant/RuntimeConfigurable.java
+++ b/src/main/org/apache/tools/ant/RuntimeConfigurable.java
@@ -29,6 +29,7 @@
import java.util.Iterator;
import org.apache.tools.ant.util.CollectionUtils;
+import org.apache.tools.ant.taskdefs.MacroDef;
import org.apache.tools.ant.taskdefs.MacroInstance;
import org.xml.sax.AttributeList;
import org.xml.sax.helpers.AttributeListImpl;
@@ -386,11 +387,17 @@
// reflect these into the target, defer for
// MacroInstance where properties are expanded for the
// nested sequential
- Object attrValue = null;
+ Object attrValue = PropertyHelper.getPropertyHelper(p).parseProperties(value);
if (target instanceof MacroInstance) {
- attrValue = value;
- } else {
- attrValue = PropertyHelper.getPropertyHelper(p).parseProperties(value);
+ for (Iterator attrs = ((MacroInstance) target).getMacroDef().getAttributes().iterator(); attrs.hasNext();) {
+ MacroDef.Attribute attr = (MacroDef.Attribute) attrs.next();
+ if (attr.getName().equals(name)) {
+ if (!attr.isDoubleExpanding()) {
+ attrValue = value;
+ }
+ break;
+ }
+ }
}
try {
ih.setAttribute(p, target, name, attrValue);
diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
index 55bdca6..9a05765 100644
--- a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
+++ b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
@@ -331,6 +331,7 @@
private String name;
private String defaultValue;
private String description;
+ private boolean doubleExpanding = true;
/**
* The name of the attribute.
@@ -387,6 +388,25 @@
}
/**
+ * See {@link #isDoubleExpanding} for explanation.
+ * @param doubleExpanding true to expand twice, false for just once
+ * @since Ant 1.8.3
+ */
+ public void setDoubleExpanding(boolean doubleExpanding) {
+ this.doubleExpanding = doubleExpanding;
+ }
+
+ /**
+ * Determines whether {@link RuntimeConfigurable#maybeConfigure(Project, boolean)} will reevaluate this property.
+ * For compatibility reasons (#52621) it will, though for most applications (#42046) it should not.
+ * @return true if expanding twice (the default), false for just once
+ * @since Ant 1.8.3
+ */
+ public boolean isDoubleExpanding() {
+ return doubleExpanding;
+ }
+
+ /**
* equality method
*
* @param obj an <code>Object</code> value
diff --git a/src/tests/antunit/taskdefs/condition/antversion-test.xml b/src/tests/antunit/taskdefs/condition/antversion-test.xml
index 9b68f4c..89c2d7e 100644
--- a/src/tests/antunit/taskdefs/condition/antversion-test.xml
+++ b/src/tests/antunit/taskdefs/condition/antversion-test.xml
@@ -34,7 +34,7 @@
<target name="test-atleast-fail">
<property name="version" value="1.8.9" />
<au:assertFalse>
- <antversion atleast="1.9.0" />
+ <antversion atleast="1.1000.0" />
</au:assertFalse>
</target>
diff --git a/src/tests/antunit/taskdefs/macrodef-test.xml b/src/tests/antunit/taskdefs/macrodef-test.xml
index 7686a54..b12e6f7 100644
--- a/src/tests/antunit/taskdefs/macrodef-test.xml
+++ b/src/tests/antunit/taskdefs/macrodef-test.xml
@@ -33,16 +33,28 @@
<au:assertLogContains text="THIS IS NOT DEFAULT LOG"/>
</target>
- <target name="testDoubleExpandedProperties"
+ <target name="testDisableDoubleExpandedProperties"
description="https://issues.apache.org/bugzilla/show_bug.cgi?id=42046">
<macrodef name="indirect">
+ <attribute name="value" doubleexpanding="false"/>
+ <sequential>
+ <echo message="@{value}"/>
+ </sequential>
+ </macrodef>
+ <indirect value="$${basedir}"/>
+ <au:assertLogContains text="{basedir}"/>
+ </target>
+
+ <target name="testEnableDoubleExpandedProperties"
+ description="https://issues.apache.org/bugzilla/show_bug.cgi?id=52621">
+ <macrodef name="indirect">
<attribute name="value"/>
<sequential>
<echo message="@{value}"/>
</sequential>
</macrodef>
<indirect value="$${basedir}"/>
- <au:assertLogContains text="{basedir}"/>
+ <au:assertLogDoesntContain text="{basedir}"/>
</target>
</project>