You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by ma...@apache.org on 2008/07/20 23:45:02 UTC
svn commit: r678326 - in /ant/ivy/core/trunk: ./
src/java/org/apache/ivy/plugins/resolver/packager/
test/java/org/apache/ivy/plugins/resolver/
test/repositories/packager/repo/org/mod/1.0/
Author: maartenc
Date: Sun Jul 20 14:45:02 2008
New Revision: 678326
URL: http://svn.apache.org/viewvc?rev=678326&view=rev
Log:
Updated new packager resolver to use Ant API instead of command-line and updated the packager-stylesheet to make it work on windows (IVY-829)
Removed:
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/SubProcess.java
Modified:
ant/ivy/core/trunk/ivy.xml
ant/ivy/core/trunk/optional.patterns
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/PackagerCacheEntry.java
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/PackagerResolver.java
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/packager.xsl
ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/PackagerResolverTest.java
ant/ivy/core/trunk/test/repositories/packager/repo/org/mod/1.0/packager.xml
Modified: ant/ivy/core/trunk/ivy.xml
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/ivy.xml?rev=678326&r1=678325&r2=678326&view=diff
==============================================================================
--- ant/ivy/core/trunk/ivy.xml (original)
+++ ant/ivy/core/trunk/ivy.xml Sun Jul 20 14:45:02 2008
@@ -41,17 +41,19 @@
<artifact name="ivy" type="source" ext="jar" conf="source"/>
</publications>
<dependencies>
- <dependency org="ant" name="ant" rev="1.6" conf="default,ant->default"/>
+ <dependency org="ant" name="ant" rev="1.6.2" conf="default,ant->default"/>
+ <dependency org="ant" name="ant-nodeps" rev="1.6.2" conf="default"/>
+ <dependency org="ant" name="ant-trax" rev="1.6.2" conf="default"/>
<dependency org="commons-httpclient" name="commons-httpclient" rev="3.0" conf="default,httpclient->runtime,master" />
<dependency org="oro" name="oro" rev="2.0.8" conf="default,oro->default"/>
<dependency org="commons-vfs" name="commons-vfs" rev="1.0" conf="default,vfs->default" />
- <dependency org="com.jcraft" name="jsch" rev="0.1.25" conf="default,sftp->default" />
+ <dependency org="com.jcraft" name="jsch" rev="0.1.31" conf="default,sftp->default" />
<!-- Test dependencies -->
<dependency org="junit" name="junit" rev="3.8.2" conf="test->default" />
<dependency org="commons-lang" name="commons-lang" rev="[1.0,3.0[" conf="test->default" />
<dependency org="org.apache.ant" name="ant-testutil" rev="1.7.0" conf="test->default" transitive="false" />
- <dependency org="ant" name="ant-launcher" rev="1.6" conf="test->default" transitive="false"/>
+ <dependency org="ant" name="ant-launcher" rev="1.6.2" conf="test->default" transitive="false"/>
<!-- This dependency is necessary for having validation in junit tests when running with JDK1.4 -->
<dependency org="xerces" name="xercesImpl" rev="2.6.2" conf="test->default" />
Modified: ant/ivy/core/trunk/optional.patterns
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/optional.patterns?rev=678326&r1=678325&r2=678326&view=diff
==============================================================================
--- ant/ivy/core/trunk/optional.patterns (original)
+++ ant/ivy/core/trunk/optional.patterns Sun Jul 20 14:45:02 2008
@@ -29,6 +29,7 @@
org/apache/ivy/plugins/resolver/SshResolver.java
org/apache/ivy/plugins/resolver/VfsResolver.java
org/apache/ivy/plugins/resolver/VsftpResolver.java
+org/apache/ivy/plugins/resolver/packager/*.java
org/apache/ivy/util/url/HttpClientHandler.java
#This section defines the resources to copy for ivy-optional.jar
Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/PackagerCacheEntry.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/PackagerCacheEntry.java?rev=678326&r1=678325&r2=678326&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/PackagerCacheEntry.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/PackagerCacheEntry.java Sun Jul 20 14:45:02 2008
@@ -17,19 +17,22 @@
*/
package org.apache.ivy.plugins.resolver.packager;
-import java.io.BufferedOutputStream;
import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
import org.apache.ivy.core.IvyPatternHelper;
import org.apache.ivy.core.module.descriptor.Artifact;
import org.apache.ivy.core.module.id.ModuleRevisionId;
+import org.apache.ivy.plugins.repository.Resource;
import org.apache.ivy.plugins.resolver.util.ResolvedResource;
import org.apache.ivy.util.FileUtil;
+import org.apache.ivy.util.Message;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.BuildLogger;
+import org.apache.tools.ant.DefaultLogger;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.ProjectHelper;
/**
* Represents one entry in the cache of a {@link PackagerResolver}.
@@ -68,8 +71,7 @@
* @param packagerXML packager XML input stream
* @throws IllegalStateException if this entry has already been built
*/
- public synchronized void build(InputStream packagerXML) throws IOException {
-
+ public synchronized void build(Resource packagerResource) throws IOException {
// Sanity check
if (this.built) {
throw new IllegalStateException("build in directory `"
@@ -89,6 +91,7 @@
}
// Write out packager XML
+ InputStream packagerXML = packagerResource.openStream();
saveFile("packager.xml", packagerXML);
// Write packager XSLT
@@ -97,45 +100,49 @@
// Write packager XSD
saveFile("packager-1.0.xsd");
- // Write master ant build file
+ // Write master Ant build file
saveFile("build.xml");
- // Create new process argument list
- ArrayList paramList = new ArrayList();
- paramList.add("ant");
- if (this.verbose) {
- paramList.add("-verbose");
- }
- if (this.quiet) {
- paramList.add("-quiet");
- }
- paramList.add("-Divy.packager.organisation=" + this.mr.getModuleId().getOrganisation());
- paramList.add("-Divy.packager.module=" + this.mr.getModuleId().getName());
- paramList.add("-Divy.packager.revision=" + this.mr.getRevision());
- paramList.add("-Divy.packager.branch=" + this.mr.getBranch());
+ // Execute the Ant build file
+ Project project = new Project();
+ project.init();
+ project.setUserProperty("ant.file" , new File(dir, "build.xml").getAbsolutePath());
+ ProjectHelper.configureProject(project, new File(dir, "build.xml"));
+ project.setBaseDir(dir);
+
+ // Configure logging verbosity
+ BuildLogger logger = new DefaultLogger();
+ logger.setMessageOutputLevel(this.verbose ? Project.MSG_VERBOSE :
+ this.quiet ? Project.MSG_WARN : Project.MSG_INFO);
+ logger.setOutputPrintStream(System.out);
+ logger.setErrorPrintStream(System.err);
+ project.addBuildListener(logger);
+
+ // Set properties
+ project.setUserProperty("ivy.packager.organisation", "" + this.mr.getModuleId().getOrganisation());
+ project.setUserProperty("ivy.packager.module", "" + this.mr.getModuleId().getName());
+ project.setUserProperty("ivy.packager.revision", "" + this.mr.getRevision());
+ project.setUserProperty("ivy.packager.branch", "" + this.mr.getBranch());
if (this.resourceCache != null) {
- paramList.add("-Divy.packager.resourceCache=" + this.resourceCache.getCanonicalPath());
+ project.setUserProperty("ivy.packager.resourceCache", "" + this.resourceCache.getCanonicalPath());
}
if (this.resourceURL != null) {
- paramList.add("-Divy.packager.resourceURL=" + getResourceURL());
+ project.setUserProperty("ivy.packager.resourceURL", "" + getResourceURL());
}
if (this.validate) {
- paramList.add("-Divy.packager.validate=true");
+ project.setUserProperty("ivy.packager.validate", "true");
}
- String[] params = (String[]) paramList.toArray(new String[paramList.size()]);
-
- // Run ant
- SubProcess proc = new SubProcess(params, null, this.dir);
- int result;
+
+ // Execute task
+ Message.verbose("performing packager resolver build in " + this.dir);
try {
- result = proc.run();
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- if (result != 0) {
- throw new IOException("build in directory `" + this.dir + "' failed");
+ project.executeTarget("build");
+ this.built = true;
+ } catch (BuildException e) {
+ e.printStackTrace(System.out);
+ Message.verbose("packager resolver build failed: " + e);
+ throw e;
}
- this.built = true;
}
/**
@@ -166,11 +173,7 @@
}
protected void saveFile(String name, InputStream input) throws IOException {
- OutputStream out = new BufferedOutputStream(
- new FileOutputStream(new File(this.dir, name)));
- SubProcess.relayStream(input, out);
- input.close();
- out.close();
+ FileUtil.copy(input, new File(this.dir, name), null);
}
protected void saveFile(String name) throws IOException {
Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/PackagerResolver.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/PackagerResolver.java?rev=678326&r1=678325&r2=678326&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/PackagerResolver.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/PackagerResolver.java Sun Jul 20 14:45:02 2008
@@ -55,7 +55,7 @@
private boolean preserve;
private boolean verbose;
private boolean quiet;
-
+
public PackagerResolver() {
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
@@ -63,7 +63,7 @@
}
});
}
-
+
protected synchronized void clearCache() {
if (this.preserve) {
return;
@@ -190,7 +190,7 @@
entry = new PackagerCacheEntry(mr, this.buildRoot, this.resourceCache,
this.resourceURL, this.validate, this.preserve, this.verbose, this.quiet);
try {
- entry.build(packager.getResource().openStream());
+ entry.build(packager.getResource());
} catch (IOException e) {
throw new RuntimeException("can't build artifact " + artifact, e);
}
Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/packager.xsl
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/packager.xsl?rev=678326&r1=678325&r2=678326&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/packager.xsl (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/packager/packager.xsl Sun Jul 20 14:45:02 2008
@@ -126,7 +126,7 @@
<path location="{$groupId}"/>
<mapper type="unpackage" to="*">
<xsl:attribute name="from">
- <xsl:value-of select="'${basedir}/*'"/>
+ <xsl:value-of select="'${basedir}${file.separator}*'"/>
</xsl:attribute>
</mapper>
</pathconvert>
Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/PackagerResolverTest.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/PackagerResolverTest.java?rev=678326&r1=678325&r2=678326&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/PackagerResolverTest.java (original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/PackagerResolverTest.java Sun Jul 20 14:45:02 2008
@@ -35,8 +35,11 @@
import org.apache.ivy.core.resolve.ResolvedModuleRevision;
import org.apache.ivy.core.settings.IvySettings;
import org.apache.ivy.core.sort.SortEngine;
+import org.apache.ivy.plugins.resolver.packager.PackagerProperty;
import org.apache.ivy.plugins.resolver.packager.PackagerResolver;
+import org.apache.ivy.util.DefaultMessageLogger;
import org.apache.ivy.util.FileUtil;
+import org.apache.ivy.util.Message;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Copy;
import org.apache.tools.ant.types.FileSet;
@@ -61,7 +64,9 @@
private File _websitedir;
protected void setUp() throws Exception {
+
_settings = new IvySettings();
+ Message.setDefaultLogger(new DefaultMessageLogger(99));
_engine = new ResolveEngine(_settings, new EventManager(), new SortEngine(_settings));
_cache = new File("build/cache");
_data = new ResolveData(_engine, new ResolveOptions());
@@ -104,12 +109,15 @@
resolver.setSettings(_settings);
File repoRoot = new File("test/repositories/packager/repo");
resolver.addIvyPattern(
- "" + new File(repoRoot, "[organisation]/[module]/[revision]/ivy.xml").toURL());
+ "" + new File(repoRoot, "[organisation]/[module]/[revision]/ivy.xml").getAbsoluteFile().toURL().toExternalForm());
resolver.setPackagerPattern(
- "" + new File(repoRoot, "[organisation]/[module]/[revision]/packager.xml").toURL());
+ "" + new File(repoRoot, "[organisation]/[module]/[revision]/packager.xml").getAbsoluteFile().toURL().toExternalForm());
resolver.setBuildRoot(_builddir.getAbsolutePath());
resolver.setResourceCache(_cachedir.getAbsolutePath());
resolver.setPreserveBuildDirectories(true);
+ resolver.setVerbose(true);
+
+ System.setProperty("packager.website.url", new File("test/repositories/packager/website").getAbsoluteFile().toURL().toExternalForm());
resolver.setName("packager");
assertEquals("packager", resolver.getName());
@@ -132,6 +140,7 @@
assertEquals(1, report.getArtifactsReports().length);
ArtifactDownloadReport ar = report.getArtifactReport(artifact);
+ System.out.println("downloaddetails: " + ar.getDownloadDetails());
assertNotNull(ar);
assertEquals(artifact, ar.getArtifact());
Modified: ant/ivy/core/trunk/test/repositories/packager/repo/org/mod/1.0/packager.xml
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/packager/repo/org/mod/1.0/packager.xml?rev=678326&r1=678325&r2=678326&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/repositories/packager/repo/org/mod/1.0/packager.xml (original)
+++ ant/ivy/core/trunk/test/repositories/packager/repo/org/mod/1.0/packager.xml Sun Jul 20 14:45:02 2008
@@ -21,12 +21,12 @@
<property name="version" value="${ivy.packager.revision}"/>
<property name="archive" value="${name}-${version}"/>
- <resource dest="extract" url="file://${user.dir}/../../../../website/dist/${archive}.tar.gz"
+ <resource dest="extract" url="${packager.website.url}/dist/${archive}.tar.gz"
sha1="40c80c1c5d7db0038f396f2393885d2e8c74270d">
<include name="${archive}/${name}.jar"/>
</resource>
- <m2resource repo="file://${user.dir}/../../../../website/m2repo" groupId="org.apache.ivy" artifactId="foobar">
+ <m2resource repo="${packager.website.url}/m2repo" groupId="org.apache.ivy" artifactId="foobar">
<artifact classifier="janfu" sha1="da39a3ee5e6b4b0d3255bfef95601890afd80709" tofile="artifacts/jars/foobar-janfu.jar"/>
</m2resource>