Browse Source

- added "deep" properties to <ant> - you can now set properties for the

called antfile

- build.xml: read ~/.ant.properties if exist, it will allow override of local
properties ( you don't have to type -Dfoo=bar each time you run ant )

-  changed dist.dir to ant.dist.dir ( to allow users to set the destinations
per project in ant.properties )


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@267612 13f79535-47bb-0310-9956-ffa450edef68
master
Costin Manolache 25 years ago
parent
commit
b7258ab797
4 changed files with 103 additions and 40 deletions
  1. +29
    -25
      build.xml
  2. +1
    -1
      src/main/org/apache/tools/ant/Project.java
  3. +47
    -8
      src/main/org/apache/tools/ant/taskdefs/Ant.java
  4. +26
    -6
      src/main/org/apache/tools/ant/taskdefs/Property.java

+ 29
- 25
build.xml View File

@@ -20,13 +20,17 @@
<property name="build.dir" value="build"/>
<property name="build.classes" value="build/classes"/>
<property name="build.javadocs" value="build/javadocs"/>
<property name="dist.dir" value="dist"/>
<property name="ant.dist.dir" value="dist"/>

<property name="classpath" value="lib/xml.jar"/>
<property name="packages" value="org.apache.tools.*"/>
<property name="manifest" value="src/etc/manifest"/>

<property name="build.compiler" value="classic"/>

<!-- Give user a chance to override without editing this file
(and without typing -D each time it compiles it -->
<property file="${user.home}/.ant.properties" />
</target>

<!-- =================================================================== -->
@@ -93,41 +97,41 @@
<!-- Creates the distribution -->
<!-- =================================================================== -->
<target name="dist" depends="jar,javadocs">
<mkdir dir="${dist.dir}"/>
<mkdir dir="${dist.dir}/bin"/>
<mkdir dir="${dist.dir}/lib"/>
<mkdir dir="${dist.dir}/docs"/>
<mkdir dir="${dist.dir}/docs/api"/>
<mkdir dir="${dist.dir}/src"/>
<copydir src="${src.dir}" dest="${dist.dir}/src"/>
<copydir src="${lib.dir}" dest="${dist.dir}/lib"/>
<copyfile src="build.xml" dest="${dist.dir}/lib/build.xml"/>
<copydir src="src/bin" dest="${dist.dir}/bin"/>
<copydir src="${docs.dir}" dest="${dist.dir}/docs"/>
<copydir src="${build.javadocs}" dest="${dist.dir}/docs/api"/>
<chmod perm="+x" src="${dist.dir}/bin/ant"/>
<chmod perm="+x" src="${dist.dir}/bin/antRun"/>
<copyfile src="README" dest="${dist.dir}/README"/>
<copyfile src="TODO" dest="${dist.dir}/TODO"/>
<copyfile src="LICENSE" dest="${dist.dir}/LICENSE"/>
<mkdir dir="${ant.dist.dir}"/>
<mkdir dir="${ant.dist.dir}/bin"/>
<mkdir dir="${ant.dist.dir}/lib"/>
<mkdir dir="${ant.dist.dir}/docs"/>
<mkdir dir="${ant.dist.dir}/docs/api"/>
<mkdir dir="${ant.dist.dir}/src"/>
<copydir src="${src.dir}" dest="${ant.dist.dir}/src"/>
<copydir src="${lib.dir}" dest="${ant.dist.dir}/lib"/>
<copyfile src="build.xml" dest="${ant.dist.dir}/lib/build.xml"/>
<copydir src="src/bin" dest="${ant.dist.dir}/bin"/>
<copydir src="${docs.dir}" dest="${ant.dist.dir}/docs"/>
<copydir src="${build.javadocs}" dest="${ant.dist.dir}/docs/api"/>
<chmod perm="+x" src="${ant.dist.dir}/bin/ant"/>
<chmod perm="+x" src="${ant.dist.dir}/bin/antRun"/>
<copyfile src="README" dest="${ant.dist.dir}/README"/>
<copyfile src="TODO" dest="${ant.dist.dir}/TODO"/>
<copyfile src="LICENSE" dest="${ant.dist.dir}/LICENSE"/>
</target>

<!-- =================================================================== -->
<!-- Packages the distribution with ZIP -->
<!-- =================================================================== -->
<target name="dist-zip" depends="dist">
<zip zipfile="${Name}-${version}.zip" basedir="${dist.dir}" includes="**"/>
<zip zipfile="${Name}-${version}.zip" basedir="${ant.dist.dir}" includes="**"/>
</target>

<!-- =================================================================== -->
<!-- Packages the distribution with TAR-GZIP -->
<!-- =================================================================== -->
<target name="dist-tgz" depends="dist">
<tar tarfile="${Name}-${version}.tar" basedir="${dist.dir}" includes="**"/>
<tar tarfile="${Name}-${version}.tar" basedir="${ant.dist.dir}" includes="**"/>
<gzip zipfile="${Name}-${version}.tar.gz" src="${Name}-${version}.tar"/>
</target>

@@ -136,7 +140,7 @@
<!-- =================================================================== -->
<target name="clean" depends="init">
<deltree dir="${build.dir}"/>
<deltree dir="${dist.dir}"/>
<deltree dir="${ant.dist.dir}"/>
</target>

<!-- =================================================================== -->


+ 1
- 1
src/main/org/apache/tools/ant/Project.java View File

@@ -179,7 +179,7 @@ public class Project {
}

public void setUserProperty(String name, String value) {
log("Setting project property: " + name + " -> " +
log("Setting ro project property: " + name + " -> " +
value, MSG_VERBOSE);
userProperties.put(name, value);
properties.put(name, value);


+ 47
- 8
src/main/org/apache/tools/ant/taskdefs/Ant.java View File

@@ -61,6 +61,20 @@ import java.util.*;
/**
* Call Ant in a sub-project
*
* <pre>
* <target name="foo" depends="init">
* <ant antfile="build.xml" target="bar" >
* <property name="property1" value="aaaaa" />
* <property name="foo" value="baz" />
* </ant>
* </target>
*
* <target name="bar" depends="init">
* <echo message="prop is ${property1} ${foo}" />
* </target>
* </pre>
*
*
* @author costin@dnt.ro
*/
public class Ant extends Task {
@@ -69,11 +83,11 @@ public class Ant extends Task {
private String antFile = null;
private String target = null;

/**
* Do the execution.
*/
public void execute() throws BuildException {
Project p1 = new Project(project.getOutput(), project.getOutputLevel());
Vector properties=new Vector();
Project p1;
public void init() {
p1 = new Project(project.getOutput(), project.getOutputLevel());

// set user-define properties
Hashtable prop1 = project.getProperties();
@@ -81,12 +95,29 @@ public class Ant extends Task {
while (e.hasMoreElements()) {
String arg = (String) e.nextElement();
String value = (String) prop1.get(arg);
p1.setUserProperty(arg, value);
p1.setProperty(arg, value);
}
}
/**
* Do the execution.
*/
public void execute() throws BuildException {
if( antFile==null) throw new BuildException( "ant required antFile property ");

p1.setBasedir(dir);
if( dir==null) dir=".";
p1.setBasedir(dir);
p1.setUserProperty("basedir" , dir);
if (antFile == null) antFile = dir + "/build.xml";

// Override with local-defined properties
Enumeration e = properties.elements();
while (e.hasMoreElements()) {
Property p=(Property) e.nextElement();
// System.out.println("Setting " + p.getName()+ " " + p.getValue());
p.init();
}

if (antFile == null) antFile = dir + "/build.xml";
ProjectHelper.configureProject(p1, new File(antFile));

if (target == null) {
@@ -107,4 +138,12 @@ public class Ant extends Task {
public void setTarget(String s) {
this.target = s;
}

// XXX replace with createProperty!!
public Task addProperty() {
Property p=(Property)p1.createTask("property");
p.setUserProperty(true);
properties.addElement( p );
return p;
}
}

+ 26
- 6
src/main/org/apache/tools/ant/taskdefs/Property.java View File

@@ -65,19 +65,29 @@ import java.util.*;
*/
public class Property extends Task {

private String name;
private String value;
private String file;
private String resource;
String name;
String value;
String file;
String resource;

boolean userProperty=false; // set read-only properties

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setValue(String value) {
this.value = value;
}

public String getValue() {
return value;
}

public void setFile(String file) {
this.file = file;
}
@@ -90,7 +100,10 @@ public class Property extends Task {
try {
if ((name != null) && (value != null)) {
String v = ProjectHelper.replaceProperties(value, project.getProperties());
project.setProperty(name, v);
if( userProperty )
project.setUserProperty(name, v);
else
project.setProperty(name, v);
}

if (file != null) loadFile(file);
@@ -135,7 +148,14 @@ public class Property extends Task {
String name = (String) e.nextElement();
String value = (String) props.getProperty(name);
String v = ProjectHelper.replaceProperties(value, project.getProperties());
project.setProperty(name, v);
if( userProperty )
project.setUserProperty(name, v);
else
project.setProperty(name, v);
}
}

public void setUserProperty( boolean userP ) {
userProperty=userP;
}
}

Loading…
Cancel
Save