PR: MNG-435

add a <artifact:setProperty property|ref="..." expression="project.*" pomRefId="..." /> tag for exposing the pom as variables



git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@189505 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Leslie Porter 2005-06-08 03:08:20 +00:00
parent f4c030598a
commit a27bf46440
8 changed files with 141 additions and 160 deletions

View File

@ -1,4 +1,4 @@
<model> <project>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.apache.maven</groupId> <groupId>org.apache.maven</groupId>
@ -74,4 +74,4 @@
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
</model> </project>

View File

@ -1,10 +1,15 @@
<project name="foo" xmlns:artifact="antlib:org.apache.maven.artifact.ant" default="foo"> <project name="foo" xmlns:artifact="antlib:org.apache.maven.artifact.ant" default="foo">
<target name="foo"> <target name="test-pom">
<!-- <artifact:pom file="pom.xml" id="my.maven.project"/>
TODO...
- read .m2/settings.xml
-->
<artifact:setProperty property="my.artifactid" expression="project.artifactId" pomRefId="my.maven.project" />
<echo>Artifact ID = ${my.artifactid}</echo>
<artifact:setProperty property="my.parent.artifactid" expression="project.parent.artifactId" pomRefId="my.maven.project" />
<echo>Artifact ID = ${my.parent.artifactid}</echo>
</target>
<target name="foo">
<artifact:localRepository id="local.repository" location="${basedir}/target/local-repo" layout="default"/> <artifact:localRepository id="local.repository" location="${basedir}/target/local-repo" layout="default"/>
<artifact:remoteRepository id="deploy.repository" url="file://${basedir}/target/deployment-repo" layout="legacy"/> <artifact:remoteRepository id="deploy.repository" url="file://${basedir}/target/deployment-repo" layout="legacy"/>

View File

@ -19,10 +19,11 @@
import org.apache.maven.artifact.manager.WagonManager; import org.apache.maven.artifact.manager.WagonManager;
import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.settings.Mirror;
import org.apache.maven.settings.Server; import org.apache.maven.settings.Server;
import org.apache.maven.settings.Settings; import org.apache.maven.settings.Settings;
import org.apache.maven.settings.Mirror;
import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader; import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.tools.ant.BuildException; import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project; import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task; import org.apache.tools.ant.Task;
@ -46,19 +47,30 @@
public abstract class AbstractArtifactTask public abstract class AbstractArtifactTask
extends Task extends Task
{ {
private Embedder embedder;
private Settings settings; private Settings settings;
protected ArtifactRepository createLocalArtifactRepository( LocalRepository repository ) private Embedder embedder;
private Pom pom;
private String pomRefId;
private LocalRepository localRepository;
protected ArtifactRepository createLocalArtifactRepository()
{ {
if ( localRepository == null )
{
localRepository = getDefaultLocalRepository();
}
ArtifactRepositoryLayout repositoryLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, ArtifactRepositoryLayout repositoryLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE,
repository.getLayout() ); localRepository.getLayout() );
CustomWagonManager manager = (CustomWagonManager) lookup( WagonManager.ROLE ); CustomWagonManager manager = (CustomWagonManager) lookup( WagonManager.ROLE );
manager.setLocalRepository( repository.getLocation() ); manager.setLocalRepository( localRepository.getLocation() );
return new ArtifactRepository( "local", "file://" + repository.getLocation(), repositoryLayout ); return new ArtifactRepository( "local", "file://" + localRepository.getLocation(), repositoryLayout );
} }
protected ArtifactRepository createRemoteArtifactRepository( RemoteRepository repository ) protected ArtifactRepository createRemoteArtifactRepository( RemoteRepository repository )
@ -95,53 +107,6 @@ protected ArtifactRepository createRemoteArtifactRepository( RemoteRepository re
return artifactRepository; return artifactRepository;
} }
protected Object lookup( String role )
{
try
{
return getEmbedder().lookup( role );
}
catch ( ComponentLookupException e )
{
throw new BuildException( "Unable to find component: " + role, e );
}
}
private Object lookup( String role, String roleHint )
{
try
{
return getEmbedder().lookup( role, roleHint );
}
catch ( ComponentLookupException e )
{
throw new BuildException( "Unable to find component: " + role + "[" + roleHint + "]", e );
}
}
private synchronized Embedder getEmbedder()
{
if ( embedder == null )
{
embedder = (Embedder) getProject().getReference( Embedder.class.getName() );
if ( embedder == null )
{
embedder = new Embedder();
try
{
embedder.start();
}
catch ( PlexusContainerException e )
{
throw new BuildException( "Unable to start embedder", e );
}
getProject().addReference( Embedder.class.getName(), embedder );
}
}
return embedder;
}
protected LocalRepository getDefaultLocalRepository() protected LocalRepository getDefaultLocalRepository()
{ {
Settings settings = getSettings(); Settings settings = getSettings();
@ -226,4 +191,100 @@ protected RemoteRepository createAntRemoteRepository( org.apache.maven.model.Rep
return r; return r;
} }
protected Object lookup( String role )
{
try
{
return getEmbedder().lookup( role );
}
catch ( ComponentLookupException e )
{
throw new BuildException( "Unable to find component: " + role, e );
}
}
protected Object lookup( String role, String roleHint )
{
try
{
return getEmbedder().lookup( role, roleHint );
}
catch ( ComponentLookupException e )
{
throw new BuildException( "Unable to find component: " + role + "[" + roleHint + "]", e );
}
}
private synchronized Embedder getEmbedder()
{
if ( embedder == null )
{
embedder = (Embedder) getProject().getReference( Embedder.class.getName() );
if ( embedder == null )
{
embedder = new Embedder();
try
{
embedder.start();
}
catch ( PlexusContainerException e )
{
throw new BuildException( "Unable to start embedder", e );
}
getProject().addReference( Embedder.class.getName(), embedder );
}
}
return embedder;
}
public Pom buildPom( MavenProjectBuilder projectBuilder, ArtifactRepository localArtifactRepository )
{
if ( pomRefId != null && pom != null )
{
throw new BuildException( "You cannot specify both a POM element and a pomrefid element" );
}
Pom pom = this.pom;
if ( pomRefId != null )
{
pom = (Pom) getProject().getReference( pomRefId );
if ( pom == null )
{
throw new BuildException( "Reference '" + pomRefId + "' was not found." );
}
}
if ( pom != null )
{
pom.initialise( projectBuilder, localArtifactRepository );
}
return pom;
}
public void addPom( Pom pom )
{
this.pom = pom;
}
public String getPomRefId()
{
return pomRefId;
}
public void setPomRefId( String pomRefId )
{
this.pomRefId = pomRefId;
}
public LocalRepository getLocalRepository()
{
return localRepository;
}
public void addLocalRepository( LocalRepository localRepository )
{
this.localRepository = localRepository;
}
} }

View File

@ -47,24 +47,15 @@ public class DependenciesTask
{ {
private List dependencies = new ArrayList(); private List dependencies = new ArrayList();
private LocalRepository localRepository;
private List remoteRepositories = new ArrayList(); private List remoteRepositories = new ArrayList();
private String pathId; private String pathId;
private String filesetId; private String filesetId;
private Pom pom;
public void execute() public void execute()
{ {
if ( localRepository == null ) ArtifactRepository localRepo = createLocalArtifactRepository();
{
localRepository = getDefaultLocalRepository();
}
ArtifactRepository localRepo = createLocalArtifactRepository( localRepository );
ArtifactResolver resolver = (ArtifactResolver) lookup( ArtifactResolver.ROLE ); ArtifactResolver resolver = (ArtifactResolver) lookup( ArtifactResolver.ROLE );
MavenProjectBuilder projectBuilder = (MavenProjectBuilder) lookup( MavenProjectBuilder.ROLE ); MavenProjectBuilder projectBuilder = (MavenProjectBuilder) lookup( MavenProjectBuilder.ROLE );
@ -72,6 +63,7 @@ public void execute()
List dependencies = this.dependencies; List dependencies = this.dependencies;
Pom pom = buildPom( projectBuilder, localRepo );
if ( pom != null ) if ( pom != null )
{ {
if ( !dependencies.isEmpty() ) if ( !dependencies.isEmpty() )
@ -79,8 +71,6 @@ public void execute()
throw new BuildException( "You cannot specify both dependencies and a pom in the dependencies task" ); throw new BuildException( "You cannot specify both dependencies and a pom in the dependencies task" );
} }
pom.initialise( projectBuilder, localRepo );
dependencies = pom.getDependencies(); dependencies = pom.getDependencies();
for ( Iterator i = pom.getRepositories().iterator(); i.hasNext(); ) for ( Iterator i = pom.getRepositories().iterator(); i.hasNext(); )
@ -120,7 +110,7 @@ public void execute()
} }
FileList fileList = new FileList(); FileList fileList = new FileList();
fileList.setDir( localRepository.getLocation() ); fileList.setDir( getLocalRepository().getLocation() );
FileSet fileSet = new FileSet(); FileSet fileSet = new FileSet();
fileSet.setDir( fileList.getDir( getProject() ) ); fileSet.setDir( fileList.getDir( getProject() ) );
@ -196,16 +186,6 @@ public void addDependency( Dependency dependency )
dependencies.add( dependency ); dependencies.add( dependency );
} }
public LocalRepository getLocalRepository()
{
return localRepository;
}
public void addLocalRepository( LocalRepository localRepository )
{
this.localRepository = localRepository;
}
public String getPathId() public String getPathId()
{ {
return pathId; return pathId;
@ -225,14 +205,4 @@ public void setFilesetId( String filesetId )
{ {
this.filesetId = filesetId; this.filesetId = filesetId;
} }
public Pom getPom()
{
return pom;
}
public void addPom( Pom pom )
{
this.pom = pom;
}
} }

View File

@ -37,29 +37,22 @@
public class DeployTask public class DeployTask
extends AbstractArtifactTask extends AbstractArtifactTask
{ {
private Pom pom;
private LocalRepository localRepository;
private RemoteRepository remoteRepository; private RemoteRepository remoteRepository;
private File file; private File file;
public void execute() public void execute()
{ {
if ( localRepository == null ) ArtifactRepository localRepo = createLocalArtifactRepository();
{ MavenProjectBuilder builder = (MavenProjectBuilder) lookup( MavenProjectBuilder.ROLE );
localRepository = getDefaultLocalRepository();
} Pom pom = buildPom( builder, localRepo );
if ( pom == null ) if ( pom == null )
{ {
throw new BuildException( "A POM element is required to deploy to the repository" ); throw new BuildException( "A POM element is required to deploy to the repository" );
} }
ArtifactRepository localRepo = createLocalArtifactRepository( localRepository );
pom.initialise( (MavenProjectBuilder) lookup( MavenProjectBuilder.ROLE ), localRepo );
if ( remoteRepository == null ) if ( remoteRepository == null )
{ {
if ( pom.getDistributionManagement() == null || pom.getDistributionManagement().getRepository() == null ) if ( pom.getDistributionManagement() == null || pom.getDistributionManagement().getRepository() == null )
@ -102,26 +95,6 @@ public void execute()
} }
} }
public Pom getPom()
{
return pom;
}
public void addPom( Pom pom )
{
this.pom = pom;
}
public LocalRepository getLocalRepository()
{
return localRepository;
}
public void addLocalRepository( LocalRepository localRepository )
{
this.localRepository = localRepository;
}
public RemoteRepository getRemoteRepository() public RemoteRepository getRemoteRepository()
{ {
return remoteRepository; return remoteRepository;

View File

@ -38,21 +38,14 @@
public class InstallTask public class InstallTask
extends AbstractArtifactTask extends AbstractArtifactTask
{ {
private Pom pom;
private LocalRepository localRepository;
private File file; private File file;
public void execute() public void execute()
{ {
if ( localRepository == null ) ArtifactRepository localRepo = createLocalArtifactRepository();
{
localRepository = getDefaultLocalRepository();
}
ArtifactRepository localRepo = createLocalArtifactRepository( localRepository ); MavenProjectBuilder builder = (MavenProjectBuilder) lookup( MavenProjectBuilder.ROLE );
pom.initialise( (MavenProjectBuilder) lookup( MavenProjectBuilder.ROLE ), localRepo ); Pom pom = buildPom( builder, localRepo );
Artifact artifact = new DefaultArtifact( pom.getGroupId(), pom.getArtifactId(), pom.getVersion(), Artifact artifact = new DefaultArtifact( pom.getGroupId(), pom.getArtifactId(), pom.getVersion(),
pom.getPackaging() ); pom.getPackaging() );
@ -83,26 +76,6 @@ public void execute()
} }
} }
public Pom getPom()
{
return pom;
}
public void addPom( Pom pom )
{
this.pom = pom;
}
public LocalRepository getLocalRepository()
{
return localRepository;
}
public void addLocalRepository( LocalRepository localRepository )
{
this.localRepository = localRepository;
}
public File getFile() public File getFile()
{ {
return file; return file;

View File

@ -102,7 +102,7 @@ else if ( refid != null )
} }
} }
private MavenProject getMavenProject() protected MavenProject getMavenProject()
{ {
return getInstance().mavenProject; return getInstance().mavenProject;
} }
@ -202,12 +202,10 @@ public String getPackaging()
return getMavenProject().getPackaging(); return getMavenProject().getPackaging();
} //-- String getPackaging() } //-- String getPackaging()
/* TODO: requires newer maven-core
public java.util.List getPluginRepositories() public java.util.List getPluginRepositories()
{ {
return getModel().getPluginRepositories(); return getMavenProject().getPluginRepositories();
} //-- java.util.List getPluginRepositories() } //-- java.util.List getPluginRepositories()
*/
public Reports getReports() public Reports getReports()
{ {

View File

@ -4,6 +4,7 @@
<typedef name="dependencies" classname="org.apache.maven.artifact.ant.DependenciesTask"/> <typedef name="dependencies" classname="org.apache.maven.artifact.ant.DependenciesTask"/>
<typedef name="install" classname="org.apache.maven.artifact.ant.InstallTask"/> <typedef name="install" classname="org.apache.maven.artifact.ant.InstallTask"/>
<typedef name="deploy" classname="org.apache.maven.artifact.ant.DeployTask"/> <typedef name="deploy" classname="org.apache.maven.artifact.ant.DeployTask"/>
<typedef name="setProperty" classname="org.apache.maven.artifact.ant.SetPropertyTask"/>
<!-- Types --> <!-- Types -->
<typedef name="localRepository" classname="org.apache.maven.artifact.ant.LocalRepository"/> <typedef name="localRepository" classname="org.apache.maven.artifact.ant.LocalRepository"/>