stevel 2005/01/20 07:59:52
Modified: docs/manual running.html
docs/manual/CoreTasks libraries.html
src/etc/testcases/taskdefs libraries.xml
src/main/org/apache/tools/ant/taskdefs/repository
Libraries.java MavenRepository.java Repository.java
src/testcases/org/apache/tools/ant/taskdefs
LibrariesTest.java
Log:
First updates to library
-default dest, repository
-override properties
-changes to tests to keep working
-enhancements to tests so they work behind a firewall if
~/.ant/proxy.properties contains the settings
Revision Changes Path
1.31 +12 -0 ant/docs/manual/running.html
Index: running.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/running.html,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- running.html 13 Jan 2005 23:09:32 -0000 1.30
+++ running.html 20 Jan 2005 15:59:52 -0000 1.31
@@ -277,6 +277,18 @@
</td>
</tr>
<tr>
+ <td><code>ant.maven.repository.dir</code></td>
+ <td>directory e.g. ${user.home}/.maven/repository </td>
+ <td>Override the default download location for <a
href="CoreTasks/libraries.html">libraries</a>.
+ </td>
+</tr>
+<tr>
+ <td><code>ant.maven.repository.url</code></td>
+ <td>URL e.g. <code>http://ibiblio.org/maven</code> </td>
+ <td>Override the default source location for <a
href="CoreTasks/libraries.html">libraries</a>.
+ </td>
+</tr>
+<tr>
<td><code>ant.netrexxc.*</code></td>
<td>several formats</td>
<td>Use specified values as defaults for <a
href="OptionalTasks/netrexxc.html">netrexxc</a>.
1.2 +21 -10 ant/docs/manual/CoreTasks/libraries.html
Index: libraries.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/CoreTasks/libraries.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- libraries.html 19 Jan 2005 23:15:26 -0000 1.1
+++ libraries.html 20 Jan 2005 15:59:52 -0000 1.2
@@ -42,7 +42,7 @@
<td valign="top">destDir</td>
<td valign="top">Destination directory for all downloads
</td>
- <td valign="top" align="center">Yes</td>
+ <td valign="top" align="center">No - default is
${user.home}/.maven/repository</td>
</tr>
<tr>
<td valign="top">offline</td>
@@ -68,10 +68,15 @@
<td valign="top">repositoryRef</td>
<td valign="top">Reference to a predefined repository
</td>
- <td valign="top" align="center">Only if no repository is defined
inline</td>
+ <td valign="top" align="center">No</td>
</tr>
</table>
+<p>
+The default destination is that used by Maven,
+${user.home}/.maven/repository . It can be overridden by setting the
+property <code>ant.maven.repository.dir</code> to a new location.
+</p>
</table>
<h3>Nested Elements</h3>
@@ -127,9 +132,12 @@
</table>
<h4>Repository</h4>
-
+<p>
A repository is Ant datatype that extends the <code>Repository</code> type.
-Ant only ships with one: the mavenrepository;
+Ant only ships with one: the mavenrepository. If no repository is
+declared inline, and no repositoryref attribute set, the task
+will default to the maven repository.
+</p>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
@@ -143,12 +151,6 @@
</td>
<td valign="top" align="center">No</td>
</tr>
- <tr>
- <td valign="top"></td>
- <td valign="top">
- </td>
- <td valign="top" align="center">No</td>
- </tr>
</table>
<p>Example:</p>
@@ -157,6 +159,15 @@
</pre>
<h4>mavenrepository</h4>
+
+<p>
+This connects to the Maven repository at ibiblio.org, or another
+chosen. Private repositories should copy the existing layout.
+</p>
+<p>
+If no <code>url</code> is set, the default URL is
+<code>http://ibiblio.org/maven</code>, unless the property
+<code>ant.maven.repository.url</code> is set to something else.
<table border="1" cellpadding="2" cellspacing="0">
<tr>
1.4 +46 -13 ant/src/etc/testcases/taskdefs/libraries.xml
Index: libraries.xml
===================================================================
RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/libraries.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- libraries.xml 1 Dec 2004 22:49:02 -0000 1.3
+++ libraries.xml 20 Jan 2005 15:59:52 -0000 1.4
@@ -2,10 +2,28 @@
<project name="getlibraries" basedir="." default="init">
+
+
<!-- use the normal one at ibiblio-->
<mavenrepository id="maven"/>
- <target name="init">
+
+ <!-- configure an HTTP proxy -->
+ <target name="setproxy" unless="setproxy.disabled" >
+ <!-- put your proxy settings here -->
+ <property file="${user.home}/.ant/proxy.properties" />
+ <property name="proxy.host" value="" />
+ <property name="proxy.port" value="80" />
+ <property name="proxy.user" value="" />
+ <property name="proxy.pass" value="" />
+ <echo level="verbose">
+ proxy: ${proxy.host}:${proxy.port} [${proxy.user}/${proxy.pass}]
+ </echo>
+ <setproxy proxyhost="${proxy.host}" proxyport="${proxy.port}"
+ proxyuser="${proxy.user}" proxypassword="${proxy.pass}" />
+ </target>
+
+ <target name="init" depends="setproxy">
<property name="lib.dir" value="getlib"/>
<property name="commons.logging.project" value="commons-logging"/>
@@ -15,6 +33,9 @@
<property name="commons.logging"
value="${commons.logging.project}/jars/${commons.logging.filename}"/>
+ <property name="maven.repository.dir"
+ location="${user.home}/.maven/repository" />
+
<presetdef name="gl1">
<libraries destDir="${lib.dir}">
</libraries>
@@ -29,6 +50,21 @@
<macrodef name="assert-downloaded">
<attribute name="library" default="${commons.logging}"/>
+ <attribute name="repository" default="${lib.dir}"/>
+ <sequential>
+ <fail >
+ Not found: "@{repository}/@{library}"
+ <condition>
+ <not>
+ <available file="@{repository}/@{library}"/>
+ </not>
+ </condition>
+ </fail>
+ </sequential>
+ </macrodef>
+
+<!-- <macrodef name="assert-downloaded">
+ <attribute name="library" default="${commons.logging}"/>
<sequential>
<property name="@{library}.path" location="${lib.dir}/@{library}" />
<available property="@{library}.exists"
@@ -37,20 +73,21 @@
Not found: [EMAIL PROTECTED]
</fail>
</sequential>
- </macrodef>
+ </macrodef> -->
<macrodef name="assert-not-downloaded">
<attribute name="library" default="${commons.logging}"/>
+ <attribute name="repository" default="${lib.dir}"/>
<sequential>
- <property name="@{library}.path" location="${lib.dir}/@{library}" />
- <available property="@{library}.exists"
- file="[EMAIL PROTECTED]"/>
- <fail if="@{library}.exists">
- Found: [EMAIL PROTECTED]
+ <fail>
+ Unexpectedly found: "@{repository}/@{library}"
+ <condition>
+ <available file="@{repository}/@{library}"/>
+ </condition>
</fail>
</sequential>
</macrodef>
-
+
</target>
<target name="cleanup" depends="init">
@@ -77,6 +114,7 @@
<target name="testNoRepo" depends="init">
<getlib/>
+ <assert-downloaded/>
</target>
<target name="testUnknownReference" depends="init">
@@ -85,7 +123,6 @@
</getlib>
</target>
-
<target name="testFunctionalInline" depends="init">
<getlib repositoryref="maven">
</getlib>
@@ -202,12 +239,10 @@
<target name="testForceDisabled" depends="init">
<getlib>
- <mavenrepository/>
<force enabled="true" />
<assertdownloaded count="1" />
</getlib>
<getlib >
- <mavenrepository/>
<force enabled="false" />
<assertdownloaded count="0" />
</getlib>
@@ -215,7 +250,6 @@
<target name="testAbsentFiles" depends="init">
<getlib >
- <mavenrepository/>
<absentfiles enabled="true" />
<assertdownloaded count="1" />
</getlib>
@@ -223,7 +257,6 @@
<target name="testAbsentFilesTwice" depends="testAbsentFiles">
<getlib >
- <mavenrepository/>
<absentfiles enabled="true" />
<assertdownloaded count="0" />
</getlib>
1.4 +41 -6
ant/src/main/org/apache/tools/ant/taskdefs/repository/Libraries.java
Index: Libraries.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/repository/Libraries.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Libraries.java 1 Dec 2004 22:48:37 -0000 1.3
+++ Libraries.java 20 Jan 2005 15:59:52 -0000 1.4
@@ -85,7 +85,7 @@
private boolean flatten = false;
public static final String ERROR_ONE_REPOSITORY_ONLY = "Only one
repository is allowed";
- public static final String ERROR_NO_DEST_DIR = "No destination
directory";
+ //public static final String ERROR_NO_DEST_DIR = "No destination
directory";
public static final String ERROR_NO_REPOSITORY = "No repository defined";
public static final String ERROR_NO_LIBRARIES = "No libraries declared";
public static final String ERROR_REPO_PROBE_FAILED = "Repository probe
failed with ";
@@ -96,6 +96,22 @@
/**
+ * where maven stores stuff, and where we save stuff too, unless
+ * declared otherwise.
+ */
+ public static final String MAVEN_LOCATION=".maven/repository";
+
+ /**
+ * name of the property which can provide an override of the repository
dir
+ * from [EMAIL PROTECTED] #MAVEN_LOCATION}
+ */
+ public static final String
REPOSITORY_DIR_PROPERTY="ant.maven.repository.dir";
+ /**
+ * name of the property which can provide an override of the repository
URL
+ */
+ public static final String REPOSITORY_URL_PROPERTY =
"ant.maven.repository.url";
+
+ /**
* Init the task
*
* @throws org.apache.tools.ant.BuildException
@@ -108,6 +124,23 @@
}
/**
+ * locate the default directory, by looking for the property
+ * [EMAIL PROTECTED] #REPOSITORY_DIR_PROPERTY}, and if not defined,
+ * ${user.home}/.maven/repository
+ * @return file for the default dest dir; may not exist yet.
+ */
+ private File locateDefaultDestDirectory() {
+ //set the dest dir up to the default.
+ File mavenDir
+ = new File(System.getProperty("user.home"), MAVEN_LOCATION);
+ String propertyDir =
getProject().getProperty(REPOSITORY_DIR_PROPERTY);
+ if(propertyDir!=null) {
+ mavenDir=getProject().resolveFile(propertyDir);
+ }
+ return mavenDir;
+ }
+
+ /**
* add a repository. Only one is (currently) supported
*
* @param repo
@@ -325,13 +358,12 @@
* @throws BuildException
*/
public void validate() {
- if (destDir == null
- // || !destDir.isDirectory()
- ) {
- throw new BuildException(ERROR_NO_DEST_DIR);
+ if (destDir == null) {
+ destDir=locateDefaultDestDirectory();
}
if (repository == null) {
- throw new BuildException(ERROR_NO_REPOSITORY);
+ MavenRepository
maven=(MavenRepository)getProject().createDataType(MavenRepository.TYPE_NAME);
+ repository=maven;
}
Iterator it = libraries.iterator();
while (it.hasNext()) {
@@ -365,9 +397,12 @@
*/
private void doExecute() throws BuildException {
destDir.mkdirs();
+ //get the ultimate repository
Repository repo = repository.resolve();
+ //validate it
repo.validate();
if (libraries.size() == 0) {
+ //bail out on an empty library
throw new BuildException(ERROR_NO_LIBRARIES);
}
log("Getting libraries from " + repo.toString(),
Project.MSG_VERBOSE);
1.4 +25 -1
ant/src/main/org/apache/tools/ant/taskdefs/repository/MavenRepository.java
Index: MavenRepository.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/repository/MavenRepository.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MavenRepository.java 1 Dec 2004 22:48:37 -0000 1.3
+++ MavenRepository.java 20 Jan 2005 15:59:52 -0000 1.4
@@ -18,6 +18,7 @@
package org.apache.tools.ant.taskdefs.repository;
import org.apache.tools.ant.util.FileUtils;
+import org.apache.tools.ant.BuildException;
import java.io.File;
import java.io.FileInputStream;
@@ -48,12 +49,12 @@
* this is what we think the MD5 type is
*/
protected static final String MAVEN_MD5_FILE_TYPE = "US-ASCII";
+ public static final String TYPE_NAME = "mavenrepository";
/**
* bind to the main maven repository
*/
public MavenRepository() {
- setUrl(MAVEN_URL);
}
@@ -63,6 +64,29 @@
*/
public void setCheckMD5(boolean checkMD5) {
this.checkMD5 = checkMD5;
+ }
+
+
+ /**
+ * Validation time is where the final fixup of repositories exist; this
+ * is the last chance to examine properties to see if there is an
override.
+ *
+ * @throws BuildException if unhappy
+ */
+ public void validate() {
+ if(getUrl()==null) {
+ //we have no URL yet; so use the maven one
+ if(getProject()!=null) {
+ String urlProperty=getProject()
+ .getProperty(Libraries.REPOSITORY_URL_PROPERTY);
+ if(urlProperty!=null) {
+ setUrl(urlProperty);
+ } else {
+ setUrl(MAVEN_URL);
+ }
+ }
+ }
+ super.validate();
}
/**
1.3 +2 -2
ant/src/main/org/apache/tools/ant/taskdefs/repository/Repository.java
Index: Repository.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/repository/Repository.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Repository.java 22 Nov 2004 09:23:35 -0000 1.2
+++ Repository.java 20 Jan 2005 15:59:52 -0000 1.3
@@ -27,9 +27,9 @@
* retrieval. To use this type, you must use a non-abstract class, either one
* that ships with Ant, or one you implement and declare yourself.
* <p/>
- * The <getlibraries> task lets you supply a repository by reference
+ * The <libraries> task lets you supply a repository by reference
* inline [EMAIL PROTECTED] Libraries#add(Repository)} or on the command
line [EMAIL PROTECTED]
- * GetLibraries#setRepositoryRef(org.apache.tools.ant.types.Reference)}
+ * Libraries#setRepositoryRef(org.apache.tools.ant.types.Reference)}
*
* @since Ant1.7
*/
1.4 +3 -3
ant/src/testcases/org/apache/tools/ant/taskdefs/LibrariesTest.java
Index: LibrariesTest.java
===================================================================
RCS file:
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/LibrariesTest.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- LibrariesTest.java 1 Dec 2004 22:48:37 -0000 1.3
+++ LibrariesTest.java 20 Jan 2005 15:59:52 -0000 1.4
@@ -47,11 +47,11 @@
}
public void testEmpty() {
- expectBuildException("testEmpty",Libraries.ERROR_NO_DEST_DIR);
+ expectBuildException("testEmpty", Libraries.ERROR_NO_LIBRARIES);
}
public void testEmpty2() {
- expectBuildException("testEmpty2", Libraries.ERROR_NO_REPOSITORY);
+ expectBuildException("testEmpty2", Libraries.ERROR_NO_LIBRARIES);
}
public void testEmpty3() {
@@ -59,7 +59,7 @@
}
public void testNoRepo() {
- expectBuildException("testNoRepo", Libraries.ERROR_NO_REPOSITORY);
+ execIfOnline("testNoRepo");
}
public void testUnknownReference() {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]