You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/12/12 02:02:13 UTC
svn commit: r725872 - in /maven/mercury/trunk/mercury-ant: ./
mercury-ant-tasks/
mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/
mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/
mercury-ant-tasks/src/test/jav...
Author: ogusakov
Date: Thu Dec 11 17:02:12 2008
New Revision: 725872
URL: http://svn.apache.org/viewvc?rev=725872&view=rev
Log:
[MERCURY-10, MERCURY-49, MERCURY-50] ant tasks working: classpath & repository writing functionality implemented
Added:
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java (with props)
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java (with props)
Removed:
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/DependenciesTaskTest.java
Modified:
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/pom.xml
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/AbstractAntTask.java
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/ResolveTask.java
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml
maven/mercury/trunk/mercury-ant/pom.xml
Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml Thu Dec 11 17:02:12 2008
@@ -1,15 +1,27 @@
<project name="test" default="compile" xmlns:merc="antlib:org.apache.maven.mercury.ant.tasks" >
<target name="init">
+
<property name="config.name" value="conf"/>
<property name="compiler.version" value="1.5"/>
<property name="src" value="${basedir}/src/test/compile"/>
- <property name="target" value="${basedir}/target/compile-classes"/>
+
+ <property name="target" value="${basedir}/target/compile-classes"/>
+ <delete dir="${target}"/>
+ <mkdir dir="${target}"/>
+
+ <property name="jar.target" value="${basedir}/target/compile-target"/>
+ <delete dir="${jar.target}"/>
+ <mkdir dir="${jar.target}"/>
+
+ <property name="local.repo.dir" value="${basedir}/target/test-repo"/>
+ <delete dir="${local.repo.dir}"/>
+ <mkdir dir="${local.repo.dir}"/>
<merc:config id="conf">
- <merc:repo id="localRepo" dir="${basedir}/target/test-repo"/>
- <merc:repo type="m2" id="central" url="http://repo1.maven.org/maven2"/>
+ <merc:repo id="localRepo" dir="${local.repo.dir}"/>
+ <merc:repo id="central" url="http://repo1.maven.org/maven2"/>
</merc:config>
<merc:dep id="my-libs">
@@ -24,11 +36,8 @@
configid="${config.name}"
/>
- <property name="cp" refid="compile-path"/>
- <echo>path is ${cp}</echo>
-
- <delete dir="${target}"/>
- <mkdir dir="${target}"/>
+ <property name="cp" refid="compile-path"/>
+ <echo>path is ${cp}</echo>
<javac srcdir="${src}"
destdir="${target}"
@@ -37,6 +46,20 @@
source="${compiler.version}"
target="${compiler.version}"
/>
+
+
+ <jar destfile="${jar.target}/t.jar"
+ basedir="${target}"
+ />
+
+ </target>
+
+ <target name="deploy" depends="compile">
+ <merc:write repoid="localRepo"
+ name="t:t:1.0"
+ file="${jar.target}/t.jar"
+ />
+
</target>
</project>
\ No newline at end of file
Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/pom.xml
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/pom.xml?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/pom.xml (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/pom.xml Thu Dec 11 17:02:12 2008
@@ -22,6 +22,16 @@
</dependency>
<!-- Mercury deps -->
+
+ <dependency>
+ <groupId>org.apache.maven.mercury</groupId>
+ <artifactId>mercury-artifact</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.maven.mercury</groupId>
+ <artifactId>mercury-external</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.maven.mercury</groupId>
@@ -49,13 +59,19 @@
<groupId>org.apache.maven</groupId>
<artifactId>maven-mercury</artifactId>
</dependency>
-
+
<dependency>
<groupId>org.apache.maven.mercury</groupId>
<artifactId>mercury-transport-http</artifactId>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.ant</groupId>
+ <artifactId>ant-testutil</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/AbstractAntTask.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/AbstractAntTask.java?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/AbstractAntTask.java (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/AbstractAntTask.java Thu Dec 11 17:02:12 2008
@@ -1,5 +1,6 @@
package org.apache.maven.mercury.ant.tasks;
+import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
/**
@@ -12,18 +13,19 @@
public class AbstractAntTask
extends Task
{
- private String name;
-
- public String getName()
+ protected boolean _failOnError = true;
+ //----------------------------------------------------------------------------------------
+ public void setFailonerror( boolean failonerror )
{
- return name;
+ this._failOnError = failonerror;
}
-
- public void setName( String name )
+ //----------------------------------------------------------------------------------------
+ protected void throwIfEnabled( String msg )
+ throws BuildException
{
- this.name = name;
+ if( _failOnError )
+ throw new BuildException( msg );
}
-
-
-
+ //----------------------------------------------------------------------------------------
+ //----------------------------------------------------------------------------------------
}
Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java Thu Dec 11 17:02:12 2008
@@ -24,17 +24,22 @@
public class Config
extends AbstractDataType
{
- Collection<Repo> _repositories;
+ Collection<Repo> _repos;
+
+ Collection<Repository> _repositories;
public Collection<Repository> getRepositories()
throws MalformedURLException
{
- if( Util.isEmpty( _repositories ) )
+ if( Util.isEmpty( _repos ) )
return null;
- Collection<Repository> repos = new ArrayList<Repository>( _repositories.size() );
+ if( _repositories != null )
+ return _repositories;
+
+ _repositories = new ArrayList<Repository>( _repos.size() );
- for( Repo repo : _repositories )
+ for( Repo repo : _repos )
{
if( repo.isLocal() )
{
@@ -42,7 +47,7 @@
LocalRepositoryM2 r = new LocalRepositoryM2( repo.getId(), new File( repo._dir ), dp );
- repos.add( r );
+ _repositories.add( r );
}
else
{
@@ -52,21 +57,21 @@
RemoteRepositoryM2 r = new RemoteRepositoryM2( server, dp );
- repos.add( r );
+ _repositories.add( r );
}
}
-
- return repos;
+
+ return _repositories;
}
public Repo createRepo()
{
- if( _repositories == null )
- _repositories = new ArrayList<Repo>(4);
+ if( _repos == null )
+ _repos = new ArrayList<Repo>(4);
Repo r = new Repo();
- _repositories.add( r );
+ _repos.add( r );
return r;
}
Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties Thu Dec 11 17:02:12 2008
@@ -1,5 +1,8 @@
resolve.task.name=Mercury dependency resolver
resolve.task.desc=this task prepares a list of dependencies, resolves them and injects into a path
+
+write.task.name=Mercury write to repository task
+write.task.desc=this task writes a binary into specified repository
#=======================================================================================================
config.id.mandatory=configid attribute is mandatory, cannot create repositories without it
config.id.object.null=object pointed by {0} is null
@@ -14,3 +17,10 @@
empty.map=internal error - please report to the authors: bucket map cannot be empty at this juncture - found {0}
empty.map.2=internal error 2 - please report to the authors: bucket map cannot be empty at this juncture - found {0}
+write.repo.id.mandatory=repo id is mandatory for write task - none supplied
+write.repo.not.found=Repository {0} not yet declared in the build file.
+write.file.mandatory=file is mandatory for write task - none supplied
+write.file.not.found=File {0} foes not exist - cannot write it to the repository {1}
+write.no.name.no.pom=write task desperately needs either name or pom to deploy file {0} to {1}
+write.no.name.no.pom=write task desperately needs only name or pom, not both, to deploy file {0} to {1}
+write.pom.not.supported=write task does not support pom yet. Saw one deploying file {0} to {1}
Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/ResolveTask.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/ResolveTask.java?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/ResolveTask.java (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/ResolveTask.java Thu Dec 11 17:02:12 2008
@@ -1,11 +1,7 @@
package org.apache.maven.mercury.ant.tasks;
import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -16,14 +12,11 @@
import org.apache.maven.mercury.metadata.DependencyBuilder;
import org.apache.maven.mercury.metadata.DependencyBuilderFactory;
import org.apache.maven.mercury.repository.api.ArtifactResults;
-import org.apache.maven.mercury.repository.api.LocalRepository;
import org.apache.maven.mercury.repository.api.Repository;
-import org.apache.maven.mercury.repository.api.RepositoryException;
import org.apache.maven.mercury.repository.virtual.VirtualRepositoryReader;
import org.apache.maven.mercury.util.Util;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.types.FileList;
-import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.Path;
import org.codehaus.plexus.lang.DefaultLanguage;
import org.codehaus.plexus.lang.Language;
@@ -70,12 +63,6 @@
return TASK_NAME;
}
//----------------------------------------------------------------------------------------
- private void throwIfEnabled( String msg )
- {
- if( _failOnError )
- throw new BuildException( msg );
- }
- //----------------------------------------------------------------------------------------
@Override
public void execute()
throws BuildException
@@ -238,11 +225,6 @@
return;
}
}
-
- public void setFailonerror( boolean failonerror )
- {
- this._failOnError = failonerror;
- }
public void setConfigid( String configid )
{
Added: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java?rev=725872&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java (added)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java Thu Dec 11 17:02:12 2008
@@ -0,0 +1,218 @@
+package org.apache.maven.mercury.ant.tasks;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.maven.mercury.artifact.Artifact;
+import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
+import org.apache.maven.mercury.artifact.ArtifactMetadata;
+import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
+import org.apache.maven.mercury.artifact.DefaultArtifact;
+import org.apache.maven.mercury.metadata.DependencyBuilder;
+import org.apache.maven.mercury.metadata.DependencyBuilderFactory;
+import org.apache.maven.mercury.repository.api.ArtifactResults;
+import org.apache.maven.mercury.repository.api.LocalRepository;
+import org.apache.maven.mercury.repository.api.Repository;
+import org.apache.maven.mercury.repository.api.RepositoryException;
+import org.apache.maven.mercury.repository.virtual.VirtualRepositoryReader;
+import org.apache.maven.mercury.util.Util;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.types.FileList;
+import org.apache.tools.ant.types.FileSet;
+import org.apache.tools.ant.types.Path;
+import org.codehaus.plexus.lang.DefaultLanguage;
+import org.codehaus.plexus.lang.Language;
+import org.omg.stub.java.rmi._Remote_Stub;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class WriteTask
+extends AbstractAntTask
+{
+ private static final Language _lang = new DefaultLanguage( WriteTask.class );
+
+ public static final String TASK_NAME = _lang.getMessage( "write.task.name" );
+ public static final String TASK_DESC = _lang.getMessage( "write.task.desc" );
+
+ private String _repoid;
+ private String _file;
+ private String _name;
+ private String _pom;
+ //----------------------------------------------------------------------------------------
+ @Override
+ public String getDescription()
+ {
+ return TASK_DESC;
+ }
+
+ @Override
+ public String getTaskName()
+ {
+ return TASK_NAME;
+ }
+ //----------------------------------------------------------------------------------------
+ private Repository findRepo()
+ throws BuildException
+ {
+ Hashtable<String, Object> refs = getProject().getReferences();
+
+ for( String key : refs.keySet() )
+ {
+ Object o = refs.get(key);
+
+ if( o == null )
+ continue;
+
+ if( ! Config.class.isAssignableFrom( o.getClass() ) )
+ continue;
+
+ Config conf = (Config)o;
+
+ Collection<Repository> repos;
+ try
+ {
+ repos = conf.getRepositories();
+ }
+ catch( MalformedURLException e )
+ {
+ throw new BuildException( e );
+ }
+
+ if( Util.isEmpty( repos ) )
+ continue;
+
+ for( Repository r : repos )
+ if( _repoid.equals( r.getId() ) )
+ return r;
+ }
+
+ return null;
+ }
+ //----------------------------------------------------------------------------------------
+ @Override
+ public void execute()
+ throws BuildException
+ {
+ if( _repoid == null )
+ {
+ throwIfEnabled( _lang.getMessage( "write.repo.id.mandatory" ) );
+ return;
+ }
+
+ Repository repo = findRepo();
+
+ if( repo == null )
+ {
+ throwIfEnabled( _lang.getMessage( "write.repo.not.found", _repoid ) );
+ return;
+ }
+
+ if( _file == null )
+ {
+ throwIfEnabled( _lang.getMessage( "write.file.mandatory" ) );
+ return;
+ }
+
+ File file = new File( _file );
+
+ if( !file.exists() )
+ {
+ throwIfEnabled( _lang.getMessage( "write.file.not.found", _file, _repoid ) );
+ return;
+ }
+
+ if( Util.isEmpty( _name ) && Util.isEmpty( _pom ) )
+ {
+ throwIfEnabled( _lang.getMessage( "write.no.name.no.pom", _file, _repoid ) );
+ return;
+ }
+
+ if( !Util.isEmpty( _name ) && !Util.isEmpty( _pom ) )
+ {
+ throwIfEnabled( _lang.getMessage( "write.no.name.no.pom", _file, _repoid ) );
+ return;
+ }
+
+ if( !Util.isEmpty( _pom ) )
+ {
+ throwIfEnabled( _lang.getMessage( "write.pom.not.supported", _file, _repoid ) );
+ return;
+ }
+
+ try
+ {
+ DefaultArtifact a = null;
+
+ File pom = null;
+
+ if( !Util.isEmpty( _name ) )
+ {
+ a = new DefaultArtifact( new ArtifactBasicMetadata(_name) );
+
+ String pomStr =
+"?xml version='1.0' encoding='UTF-8'?>\n"
++"<project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd'>\n"
++"<modelVersion>4.0.0</modelVersion>\n"
++"<groupId>"+a.getGroupId()+"</groupId>\n"
++"<artifactId>"+a.getArtifactId()+"</artifactId>\n"
++ ( Util.isEmpty( a.getClassifier() ) ? "" : "<classifier>"+a.getClassifier()+"</classifier>\n" )
++"<version>"+a.getVersion()+"</version>\n"
++ ( Util.isEmpty( a.getType() ) ? "" : "<packaging>"+a.getType()+"</packaging>\n" )
++"</project>\n"
+ ;
+
+ a.setPomBlob( pomStr.getBytes() );
+
+ a.setFile( file );
+
+ ArrayList<Artifact> al = new ArrayList<Artifact>(1);
+ al.add( a );
+
+ repo.getWriter().writeArtifacts( al );
+ }
+ else
+ {
+ throwIfEnabled( _lang.getMessage( "write.pom.not.supported", _file, _repoid ) );
+ return;
+ }
+
+ }
+ catch( Exception e )
+ {
+ throwIfEnabled( e.getMessage() );
+ }
+ }
+
+ public void setRepoid( String repoid )
+ {
+ this._repoid = repoid;
+ }
+
+ public void setFile( String file )
+ {
+ this._file = file;
+ }
+
+ public void setName( String name )
+ {
+ this._name = name;
+ }
+
+ public void setPom( String pom )
+ {
+ this._pom = pom;
+ }
+
+}
\ No newline at end of file
Propchange: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml Thu Dec 11 17:02:12 2008
@@ -3,6 +3,7 @@
<antlib>
<taskdef name="resolve" classname="org.apache.maven.mercury.ant.tasks.ResolveTask"/>
+ <taskdef name="write" classname="org.apache.maven.mercury.ant.tasks.WriteTask"/>
<typedef name="dep" classname="org.apache.maven.mercury.ant.tasks.Dep"/>
<typedef name="config" classname="org.apache.maven.mercury.ant.tasks.Config"/>
Added: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java?rev=725872&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java (added)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java Thu Dec 11 17:02:12 2008
@@ -0,0 +1,227 @@
+package org.apache.maven.mercury.ant.tasks;
+
+import java.io.File;
+
+import org.apache.maven.mercury.spi.http.server.SimpleTestServer;
+import org.apache.maven.mercury.util.FileUtil;
+import org.apache.tools.ant.BuildFileTest;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.types.Path;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class MecuryAntTest
+extends BuildFileTest
+{
+ static final String _localRepoDir = "./target/repo";
+
+ static final String _writeRepoDir = "./target/test-repo";
+ static File _writeRepoDirFile;
+
+ static final String _compileDir = "./target/compile-classes";
+ static File _compileDirFile;
+
+ static final String _jarDir = "./target/compile-target";
+ static File _jarDirFile;
+
+ static final String _remoteRepoDir = "./target/test-classes/remoteRepo";
+ static final String _remoteRepoUrlPrefix = "http://localhost:";
+ static final String _remoteRepoUrlSufix = "/repo";
+
+ static final String _pathId = "class-path";
+
+ SimpleTestServer _jetty;
+ String _port;
+
+ Resolver _resolver;
+ Config _config;
+ Dep _dep;
+
+ Dep.Dependency _asm;
+ Dep.Dependency _ant;
+
+ //-----------------------------------
+ final class Resolver
+ extends ResolveTask
+ {
+ @SuppressWarnings("deprecation")
+ public Resolver()
+ {
+ project = new Project();
+ project.init();
+ target = new Target();
+ }
+ }
+ //-----------------------------------
+ final class Writer
+ extends WriteTask
+ {
+ @SuppressWarnings("deprecation")
+ public Writer()
+ {
+ project = new Project();
+ project.init();
+ target = new Target();
+ }
+ }
+ //-----------------------------------
+ public MecuryAntTest( String name )
+ {
+ super( name );
+ }
+ //-----------------------------------
+ @Override
+ protected void setUp()
+ throws Exception
+ {
+ _dep = new Dep();
+ _dep.setId( "my-lib" );
+
+ _asm = _dep.createDependency();
+ _asm.setName( "asm:asm-xml:3.0" );
+
+ _ant = _dep.createDependency();
+ _ant.setName( "ant:ant:1.6.5" );
+
+ _config = new Config();
+ _config.setId( "conf" );
+
+ File lrDir = new File( _localRepoDir );
+ FileUtil.delete( lrDir );
+ lrDir.mkdirs();
+
+ Config.Repo localRepo = _config.createRepo();
+ localRepo.setId( "localRepo" );
+ localRepo.setDir( _localRepoDir );
+
+ File rrDir = new File( _remoteRepoDir );
+ _jetty = new SimpleTestServer( rrDir, _remoteRepoUrlSufix );
+ _jetty.start();
+ _port = ""+_jetty.getPort();
+
+ Config.Repo remoteRepo = _config.createRepo();
+ remoteRepo.setId( "remoteRepo" );
+ remoteRepo.setUrl( _remoteRepoUrlPrefix + _port + _remoteRepoUrlSufix );
+
+ _resolver = new Resolver();
+ _resolver.setDepid( _dep.getId() );
+ _resolver.setConfigid( _config.getId() );
+
+ _resolver.setPathid( _pathId );
+
+ Project project = _resolver.getProject();
+
+ project.addReference( _config.getId(), _config );
+ project.addReference( _dep.getId(), _dep );
+
+ System.setProperty( "ant.home", ".src/test/apache-ant-1.6.5" );
+
+ configureProject("build.xml");
+
+ _writeRepoDirFile = new File( _writeRepoDir );
+ FileUtil.delete( _writeRepoDirFile );
+ _writeRepoDirFile.mkdirs();
+
+ _compileDirFile = new File( _compileDir );
+ FileUtil.delete( _compileDirFile );
+ _compileDirFile.mkdirs();
+
+ _jarDirFile = new File( _jarDir );
+ FileUtil.delete( _jarDirFile );
+ _jarDirFile.mkdirs();
+ }
+ //-----------------------------------
+ @Override
+ protected void tearDown()
+ throws Exception
+ {
+ _jetty.stop();
+ _jetty.destroy();
+
+ System.out.println("Jetty on :"+_port+" destroyed\n<========\n\n");
+ }
+ //-----------------------------------
+ public void testReadDependencies()
+ {
+ String title = "resolver";
+ System.out.println("========> start "+title);
+ System.out.flush();
+
+ _resolver.execute();
+
+ Project pr = _resolver.getProject();
+
+ Path path = (Path)pr.getReference( _pathId );
+
+ assertNotNull( path );
+
+ String [] list = path.list();
+
+ assertNotNull( list );
+
+ assertEquals( 6, list.length );
+
+// System.out.println("\n==== Files found ====");
+// for( String s : list )
+// System.out.println(s);
+
+ File af = new File( _localRepoDir, "/ant/ant/1.6.5/ant-1.6.5.jar" );
+ assertTrue( af.exists() );
+
+ af = new File( _localRepoDir, "/asm/asm-util/3.0/asm-util-3.0.jar" );
+ assertTrue( af.exists() );
+
+ af = new File( _localRepoDir, "/asm/asm-xml/3.0/asm-xml-3.0.jar" );
+ assertTrue( af.exists() );
+
+ af = new File( _localRepoDir, "/asm/asm-tree/3.0/asm-tree-3.0.jar" );
+ assertTrue( af.exists() );
+
+ af = new File( _localRepoDir, "/asm/asm/3.0/asm-3.0.jar" );
+ assertTrue( af.exists() );
+
+ }
+ //-----------------------------------
+ public void testCompile()
+ {
+ String title = "compile";
+ System.out.println("========> start "+title);
+ System.out.flush();
+
+ File af = new File( _compileDirFile, "T.class" );
+
+ assertFalse( af.exists() );
+
+ File jar = new File( _jarDirFile, "t.jar" );
+
+ assertFalse( jar.exists() );
+
+ executeTarget("compile");
+
+ assertTrue( af.exists() );
+
+ assertTrue( jar.exists() );
+ }
+ //-----------------------------------
+ public void testWriteToRepository()
+ {
+ String title = "write";
+ System.out.println("========> start "+title);
+ System.out.flush();
+
+ File af = new File( _writeRepoDirFile, "/t/t/1.0/t-1.0.jar" );
+
+ assertFalse( af.exists() );
+
+ executeTarget("deploy");
+
+ assertTrue( af.exists() );
+ }
+ //-----------------------------------
+}
Propchange: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/mercury/trunk/mercury-ant/pom.xml
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/pom.xml?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/pom.xml (original)
+++ maven/mercury/trunk/mercury-ant/pom.xml Thu Dec 11 17:02:12 2008
@@ -27,7 +27,8 @@
<properties>
- <ant.version>1.6.5</ant.version>
+ <ant.version>1.7.0</ant.version>
+ <antunit.version>1.1</antunit.version>
<mercury.version>1.0.0-alpha-3-SNAPSHOT</mercury.version>
<maven.version>3.0-SNAPSHOT</maven.version>
@@ -56,6 +57,18 @@
</dependency>
<!-- Mercury deps -->
+
+ <dependency>
+ <groupId>org.apache.maven.mercury</groupId>
+ <artifactId>mercury-artifact</artifactId>
+ <version>${mercury.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.maven.mercury</groupId>
+ <artifactId>mercury-external</artifactId>
+ <version>${mercury.version}</version>
+ </dependency>
<dependency>
<groupId>org.apache.maven.mercury</groupId>
@@ -104,6 +117,20 @@
<version>${mercury.version}</version>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.ant</groupId>
+ <artifactId>ant-launcher</artifactId>
+ <version>${ant.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ant</groupId>
+ <artifactId>ant-testutil</artifactId>
+ <version>${ant.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>