mirror of https://github.com/apache/maven.git
restore deleted files, and fix package on ProjectArtifactMetadata
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@164909 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0af1c74587
commit
27f12f85c1
|
@ -0,0 +1,163 @@
|
||||||
|
package org.apache.maven.project.artifact;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2001-2005 The Apache Software Foundation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.apache.maven.artifact.Artifact;
|
||||||
|
import org.apache.maven.artifact.factory.ArtifactFactory;
|
||||||
|
import org.apache.maven.artifact.factory.DefaultArtifactFactory;
|
||||||
|
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
|
||||||
|
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
|
||||||
|
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||||
|
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
|
||||||
|
import org.apache.maven.artifact.resolver.ArtifactResolver;
|
||||||
|
import org.apache.maven.model.Dependency;
|
||||||
|
import org.apache.maven.model.Model;
|
||||||
|
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
|
||||||
|
import org.apache.maven.project.MavenProject;
|
||||||
|
import org.apache.maven.project.MavenProjectBuilder;
|
||||||
|
import org.apache.maven.project.ProjectBuildingException;
|
||||||
|
import org.apache.maven.wagon.util.IoUtils;
|
||||||
|
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author <a href="mailto:jason@maven.org">Jason van Zyl </a>
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public class MavenMetadataSource
|
||||||
|
implements ArtifactMetadataSource
|
||||||
|
{
|
||||||
|
private MavenProjectBuilder mavenProjectBuilder;
|
||||||
|
|
||||||
|
private ArtifactResolver artifactResolver;
|
||||||
|
|
||||||
|
// TODO: configure?
|
||||||
|
protected ArtifactFactory artifactFactory = new DefaultArtifactFactory();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @todo remove.
|
||||||
|
*/
|
||||||
|
private MavenXpp3Reader reader = new MavenXpp3Reader();
|
||||||
|
|
||||||
|
public MavenMetadataSource( ArtifactResolver artifactResolver )
|
||||||
|
{
|
||||||
|
this.artifactResolver = artifactResolver;
|
||||||
|
this.mavenProjectBuilder = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MavenMetadataSource( ArtifactResolver artifactResolver, MavenProjectBuilder projectBuilder )
|
||||||
|
{
|
||||||
|
this.artifactResolver = artifactResolver;
|
||||||
|
this.mavenProjectBuilder = projectBuilder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set retrieve( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories )
|
||||||
|
throws ArtifactMetadataRetrievalException
|
||||||
|
{
|
||||||
|
// TODO: only metadata is really needed - resolve as metadata
|
||||||
|
artifact = artifactFactory.createArtifact( artifact.getGroupId(), artifact.getArtifactId(),
|
||||||
|
artifact.getVersion(), artifact.getScope(), "pom" );
|
||||||
|
|
||||||
|
List dependencies = null;
|
||||||
|
|
||||||
|
// Use the ProjectBuilder, to enable post-processing and inheritance calculation before retrieving the
|
||||||
|
// associated artifacts.
|
||||||
|
if ( mavenProjectBuilder != null )
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
MavenProject p = mavenProjectBuilder.buildFromRepository( artifact, remoteRepositories,
|
||||||
|
localRepository );
|
||||||
|
dependencies = p.getDependencies();
|
||||||
|
}
|
||||||
|
catch ( ProjectBuildingException e )
|
||||||
|
{
|
||||||
|
throw new ArtifactMetadataRetrievalException( "Unable to read the metadata file", e );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// there is code in plexus that uses this (though it shouldn't) so we
|
||||||
|
// need to be able to not have a project builder
|
||||||
|
// TODO: remove - which then makes this a very thin wrapper around a project builder - is it needed?
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
artifactResolver.resolve( artifact, remoteRepositories, localRepository );
|
||||||
|
}
|
||||||
|
catch ( ArtifactResolutionException e )
|
||||||
|
{
|
||||||
|
throw new ArtifactMetadataRetrievalException( "Error while resolving metadata artifact", e );
|
||||||
|
}
|
||||||
|
|
||||||
|
FileReader reader = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// String path = localRepository.pathOfMetadata( new ProjectArtifactMetadata( artifact, null ) );
|
||||||
|
// File file = new File( localRepository.getBasedir(), path );
|
||||||
|
File file = artifact.getFile();
|
||||||
|
reader = new FileReader( file );
|
||||||
|
Model model = this.reader.read( reader );
|
||||||
|
dependencies = model.getDependencies();
|
||||||
|
}
|
||||||
|
catch ( FileNotFoundException e )
|
||||||
|
{
|
||||||
|
throw new ArtifactMetadataRetrievalException( "Unable to find the metadata file", e );
|
||||||
|
}
|
||||||
|
catch ( IOException e )
|
||||||
|
{
|
||||||
|
throw new ArtifactMetadataRetrievalException( "Unable to read the metadata file", e );
|
||||||
|
}
|
||||||
|
catch ( XmlPullParserException e )
|
||||||
|
{
|
||||||
|
throw new ArtifactMetadataRetrievalException( "Unable to parse the metadata file", e );
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
IoUtils.close( reader );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return createArtifacts( dependencies, artifact.getScope() );
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Set createArtifacts( List dependencies, String inheritedScope )
|
||||||
|
{
|
||||||
|
Set projectArtifacts = new HashSet();
|
||||||
|
|
||||||
|
for ( Iterator i = dependencies.iterator(); i.hasNext(); )
|
||||||
|
{
|
||||||
|
Dependency d = (Dependency) i.next();
|
||||||
|
|
||||||
|
Artifact artifact = artifactFactory.createArtifact( d.getGroupId(), d.getArtifactId(), d.getVersion(),
|
||||||
|
d.getScope(), d.getType(), inheritedScope );
|
||||||
|
if ( artifact != null )
|
||||||
|
{
|
||||||
|
projectArtifacts.add( artifact );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return projectArtifacts;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,114 @@
|
||||||
|
package org.apache.maven.project.artifact;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2001-2005 The Apache Software Foundation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.apache.maven.artifact.Artifact;
|
||||||
|
import org.apache.maven.artifact.manager.WagonManager;
|
||||||
|
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||||
|
import org.apache.maven.artifact.repository.layout.ArtifactPathFormatException;
|
||||||
|
import org.apache.maven.model.Model;
|
||||||
|
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
|
||||||
|
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
|
||||||
|
import org.codehaus.plexus.util.IOUtil;
|
||||||
|
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attach a POM to an artifact.
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public class ProjectArtifactMetadata
|
||||||
|
extends AbstractArtifactMetadata
|
||||||
|
{
|
||||||
|
private final File file;
|
||||||
|
|
||||||
|
public ProjectArtifactMetadata( Artifact artifact, File file )
|
||||||
|
{
|
||||||
|
super( artifact, null );
|
||||||
|
this.file = file;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFilename()
|
||||||
|
{
|
||||||
|
return getArtifact().getArtifactId() + "-" + getArtifact().getVersion() + ".pom";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void storeInLocalRepository( ArtifactRepository localRepository )
|
||||||
|
throws ArtifactMetadataRetrievalException
|
||||||
|
{
|
||||||
|
File destination;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
destination = new File( localRepository.getBasedir(), localRepository.pathOfMetadata( this ) );
|
||||||
|
}
|
||||||
|
catch ( ArtifactPathFormatException e )
|
||||||
|
{
|
||||||
|
throw new ArtifactMetadataRetrievalException( "Unable to install POM", e );
|
||||||
|
}
|
||||||
|
|
||||||
|
destination.getParentFile().mkdirs();
|
||||||
|
|
||||||
|
FileReader reader = null;
|
||||||
|
FileWriter writer = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
reader = new FileReader( file );
|
||||||
|
writer = new FileWriter( destination );
|
||||||
|
|
||||||
|
MavenXpp3Reader modelReader = new MavenXpp3Reader();
|
||||||
|
Model model = modelReader.read( reader );
|
||||||
|
model.setVersion( getArtifact().getVersion() );
|
||||||
|
|
||||||
|
MavenXpp3Writer modelWriter = new MavenXpp3Writer();
|
||||||
|
modelWriter.write( writer, model );
|
||||||
|
}
|
||||||
|
catch ( FileNotFoundException e )
|
||||||
|
{
|
||||||
|
throw new ArtifactMetadataRetrievalException( "Error rewriting POM", e );
|
||||||
|
}
|
||||||
|
catch ( IOException e )
|
||||||
|
{
|
||||||
|
throw new ArtifactMetadataRetrievalException( "Error rewriting POM", e );
|
||||||
|
}
|
||||||
|
catch ( XmlPullParserException e )
|
||||||
|
{
|
||||||
|
throw new ArtifactMetadataRetrievalException( "Error rewriting POM", e );
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
IOUtil.close( reader );
|
||||||
|
IOUtil.close( writer );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void retrieveFromRemoteRepository( ArtifactRepository remoteRepository, WagonManager wagonManager )
|
||||||
|
{
|
||||||
|
// not used - TODO: again indicates bad design?
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return "project information for " + artifact.getArtifactId() + " " + artifact.getVersion();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue