Author: brett
Date: Thu Jul 21 17:31:44 2005
New Revision: 220220
URL: http://svn.apache.org/viewcvs?rev=220220&view=rev
Log:
PR: MNG-507
implement repository relocation of an artifact
Added:
maven/components/trunk/maven-core-it/it0035/
maven/components/trunk/maven-core-it/it0035/expected-results.txt (with
props)
maven/components/trunk/maven-core-it/it0035/goals.txt (with props)
maven/components/trunk/maven-core-it/it0035/pom.xml (with props)
maven/components/trunk/maven-core-it/it0035/prebuild-hook.txt (with props)
Modified:
maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
maven/components/trunk/maven-core-it-support/1.1/ (props changed)
maven/components/trunk/maven-core-it-support/1.1-old-location/ (props
changed)
maven/components/trunk/maven-core-it/README.txt
maven/components/trunk/maven-core-it/integration-tests.txt
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
maven/components/trunk/maven-model/maven.mdo
maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml
Modified:
maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
---
maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
(original)
+++
maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
Thu Jul 21 17:31:44 2005
@@ -17,6 +17,7 @@
*/
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.manager.WagonManager;
import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -68,7 +69,7 @@
ArtifactResolver resolver = (ArtifactResolver) lookup(
ArtifactResolver.ROLE );
MavenProjectBuilder projectBuilder = (MavenProjectBuilder) lookup(
MavenProjectBuilder.ROLE );
ArtifactFactory artifactFactory = (ArtifactFactory) lookup(
ArtifactFactory.ROLE );
- MavenMetadataSource metadataSource = new MavenMetadataSource(
projectBuilder, artifactFactory );
+ MavenMetadataSource metadataSource = (MavenMetadataSource) lookup(
ArtifactMetadataSource.ROLE );
List dependencies = this.dependencies;
Modified:
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
---
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
(original)
+++
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
Thu Jul 21 17:31:44 2005
@@ -114,4 +114,8 @@
void setVersionRange( VersionRange newRange );
void selectVersion( String version );
+
+ void setGroupId( String groupId );
+
+ void setArtifactId( String artifactId );
}
Modified:
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
---
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
(original)
+++
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
Thu Jul 21 17:31:44 2005
@@ -36,9 +36,9 @@
public class DefaultArtifact
implements Artifact
{
- private final String groupId;
+ private String groupId;
- private final String artifactId;
+ private String artifactId;
/**
* The resolved version for the artifact after conflict resolution, that
has not been transformed.
@@ -406,4 +406,13 @@
this.version = version;
}
+ public void setGroupId( String groupId )
+ {
+ this.groupId = groupId;
+ }
+
+ public void setArtifactId( String artifactId )
+ {
+ this.artifactId = artifactId;
+ }
}
Modified:
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
---
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
(original)
+++
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
Thu Jul 21 17:31:44 2005
@@ -27,6 +27,8 @@
*/
public interface ArtifactMetadataSource
{
+ String ROLE = ArtifactMetadataSource.class.getName();
+
ResolutionGroup retrieve( Artifact artifact, ArtifactRepository
localRepository, List remoteRepositories )
throws ArtifactMetadataRetrievalException;
}
Propchange: maven/components/trunk/maven-core-it-support/1.1/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Jul 21 17:31:44 2005
@@ -0,0 +1 @@
+target
Propchange: maven/components/trunk/maven-core-it-support/1.1-old-location/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Jul 21 17:31:44 2005
@@ -0,0 +1 @@
+target
Modified: maven/components/trunk/maven-core-it/README.txt
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/README.txt?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/README.txt (original)
+++ maven/components/trunk/maven-core-it/README.txt Thu Jul 21 17:31:44 2005
@@ -103,6 +103,8 @@
it0034: Test version range junit [3.7,) resolves to 3.8.1
+it0035: Test artifact relocation.
+
-------------------------------------------------------------------------------
- generated sources
Modified: maven/components/trunk/maven-core-it/integration-tests.txt
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/integration-tests.txt?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/integration-tests.txt (original)
+++ maven/components/trunk/maven-core-it/integration-tests.txt Thu Jul 21
17:31:44 2005
@@ -1,3 +1,4 @@
+it0035
it0034
it0033
it0032
Added: maven/components/trunk/maven-core-it/it0035/expected-results.txt
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0035/expected-results.txt?rev=220220&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0035/expected-results.txt (added)
+++ maven/components/trunk/maven-core-it/it0035/expected-results.txt Thu Jul 21
17:31:44 2005
@@ -0,0 +1,3 @@
+${artifact:org.apache.maven:maven-core-it-support:1.1:jar}
+${artifact:org.apache.maven:maven-core-it-support:1.1:pom}
+${artifact:org.apache.maven:maven-core-it-support-old-location:1.1:pom}
Propchange: maven/components/trunk/maven-core-it/it0035/expected-results.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-core-it/it0035/expected-results.txt
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/components/trunk/maven-core-it/it0035/goals.txt
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0035/goals.txt?rev=220220&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0035/goals.txt (added)
+++ maven/components/trunk/maven-core-it/it0035/goals.txt Thu Jul 21 17:31:44
2005
@@ -0,0 +1 @@
+package
Propchange: maven/components/trunk/maven-core-it/it0035/goals.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-core-it/it0035/goals.txt
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/components/trunk/maven-core-it/it0035/pom.xml
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0035/pom.xml?rev=220220&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0035/pom.xml (added)
+++ maven/components/trunk/maven-core-it/it0035/pom.xml Thu Jul 21 17:31:44 2005
@@ -0,0 +1,20 @@
+<model>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-core-it0035</artifactId>
+ <version>1.0</version>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <type>jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-core-it-support-old-location</artifactId>
+ <version>1.1</version>
+ </dependency>
+ </dependencies>
+</model>
Propchange: maven/components/trunk/maven-core-it/it0035/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-core-it/it0035/pom.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/components/trunk/maven-core-it/it0035/prebuild-hook.txt
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0035/prebuild-hook.txt?rev=220220&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0035/prebuild-hook.txt (added)
+++ maven/components/trunk/maven-core-it/it0035/prebuild-hook.txt Thu Jul 21
17:31:44 2005
@@ -0,0 +1,3 @@
+rm ${artifact:org.apache.maven:maven-core-it-support:1.1:jar}
+rm ${artifact:org.apache.maven:maven-core-it-support:1.1:pom}
+rm ${artifact:org.apache.maven:maven-core-it-support-old-location:1.1:pom}
Propchange: maven/components/trunk/maven-core-it/it0035/prebuild-hook.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-core-it/it0035/prebuild-hook.txt
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
(original)
+++
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
Thu Jul 21 17:31:44 2005
@@ -20,6 +20,7 @@
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
import org.apache.maven.artifact.metadata.ResolutionGroup;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository;
import
org.apache.maven.artifact.repository.metadata.RepositoryMetadataManagementException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
@@ -48,8 +49,6 @@
import org.apache.maven.plugin.version.PluginVersionManager;
import org.apache.maven.plugin.version.PluginVersionResolutionException;
import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.artifact.MavenMetadataSource;
import org.apache.maven.project.path.PathTranslator;
import org.apache.maven.reporting.MavenReport;
import org.apache.maven.settings.Settings;
@@ -108,7 +107,7 @@
protected ArtifactResolver artifactResolver;
- protected MavenProjectBuilder mavenProjectBuilder;
+ protected ArtifactMetadataSource metadataSource;
protected MavenPluginMappingBuilder pluginMappingBuilder;
// END component requirements
@@ -262,7 +261,7 @@
if ( mojoDescriptor.isDependencyResolutionRequired() != null )
{
- resolveTransitiveDependencies( session, artifactResolver,
mavenProjectBuilder, mojoDescriptor
+ resolveTransitiveDependencies( session, artifactResolver,
mojoDescriptor
.isDependencyResolutionRequired(), artifactFactory, project );
downloadDependencies( project, session, artifactResolver );
@@ -474,8 +473,6 @@
try
{
- MavenMetadataSource metadataSource = new MavenMetadataSource(
mavenProjectBuilder, artifactFactory );
-
ArtifactRepository localRepository =
session.getLocalRepository();
ResolutionGroup resolutionGroup = metadataSource.retrieve(
pluginArtifact, localRepository,
@@ -962,13 +959,10 @@
// Artifact resolution
// ----------------------------------------------------------------------
- private void resolveTransitiveDependencies( MavenSession context,
ArtifactResolver artifactResolver,
- MavenProjectBuilder
mavenProjectBuilder, String scope,
+ private void resolveTransitiveDependencies( MavenSession context,
ArtifactResolver artifactResolver, String scope,
ArtifactFactory
artifactFactory, MavenProject project )
throws ArtifactResolutionException
{
- MavenMetadataSource sourceReader = new MavenMetadataSource(
mavenProjectBuilder, artifactFactory );
-
ArtifactFilter filter = new ScopeArtifactFilter( scope );
// TODO: such a call in MavenMetadataSource too - packaging not really
the intention of type
@@ -980,7 +974,7 @@
ArtifactResolutionResult result =
artifactResolver.resolveTransitively( project.getDependencyArtifacts(),
artifact, context.getLocalRepository(),
project.getRemoteArtifactRepositories(),
-
sourceReader, filter );
+
metadataSource, filter );
project.setArtifacts( result.getArtifacts() );
}
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
(original)
+++
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
Thu Jul 21 17:31:44 2005
@@ -1,8 +1,25 @@
package org.apache.maven.plugin.version;
+/*
+ * 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.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.ArtifactResolver;
import org.apache.maven.artifact.transform.LatestArtifactTransformation;
@@ -15,8 +32,6 @@
import org.apache.maven.plugin.registry.TrackableBase;
import org.apache.maven.plugin.registry.io.xpp3.PluginRegistryXpp3Writer;
import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.artifact.MavenMetadataSource;
import org.apache.maven.settings.RuntimeInfo;
import org.apache.maven.settings.Settings;
import org.codehaus.plexus.components.inputhandler.InputHandler;
@@ -36,22 +51,6 @@
import java.util.List;
import java.util.Map;
-/*
- * 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.
- */
-
public class DefaultPluginVersionManager
extends AbstractLogEnabled
implements PluginVersionManager
@@ -62,13 +61,13 @@
private ArtifactFactory artifactFactory;
- private MavenProjectBuilder projectBuilder;
-
private InputHandler inputHandler;
// calculated.
private PluginRegistry pluginRegistry;
+ private ArtifactMetadataSource metadataSource;
+
public String resolvePluginVersion( String groupId, String artifactId,
MavenProject project, Settings settings,
ArtifactRepository localRepository )
throws PluginVersionResolutionException
@@ -389,7 +388,7 @@
return shouldPersist;
}
- catch ( Exception e )
+ catch ( IOException e )
{
throw new PluginVersionResolutionException( groupId, artifactId,
"Can't read user input.", e );
}
@@ -440,7 +439,7 @@
private org.apache.maven.plugin.registry.Plugin getPlugin( String groupId,
String artifactId,
PluginRegistry
pluginRegistry )
{
- Map pluginsByKey = null;
+ Map pluginsByKey;
if ( pluginRegistry != null )
{
@@ -603,8 +602,6 @@
{
// TODO: check - this was SCOPE_RUNTIME before, now is null
Artifact artifact = artifactFactory.createProjectArtifact( groupId,
artifactId, metaVersionId );
-
- MavenMetadataSource metadataSource = new MavenMetadataSource(
projectBuilder, artifactFactory );
String version = null;
try
Modified:
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
(original)
+++
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
Thu Jul 21 17:31:44 2005
@@ -20,7 +20,7 @@
<role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
</requirement>
<requirement>
- <role>org.apache.maven.project.MavenProjectBuilder</role>
+
<role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
</requirement>
<requirement>
<role>org.apache.maven.plugin.mapping.MavenPluginMappingBuilder</role>
@@ -210,7 +210,7 @@
<instantiation-strategy>per-lookup</instantiation-strategy>
<requirements>
<requirement>
- <role>org.apache.maven.project.MavenProjectBuilder</role>
+
<role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
</requirement>
<requirement>
<role>org.apache.maven.plugin.registry.MavenPluginRegistryBuilder</role>
Modified: maven/components/trunk/maven-model/maven.mdo
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-model/maven.mdo?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- maven/components/trunk/maven-model/maven.mdo (original)
+++ maven/components/trunk/maven-model/maven.mdo Thu Jul 21 17:31:44 2005
@@ -1437,6 +1437,14 @@
]]></description>
<type>String</type>
</field>
+ <field>
+ <name>relocation</name>
+ <version>4.0.0</version>
+ <description>Relocation information if the artifact has been moved
to a new group/artifactId</description>
+ <association>
+ <type>Relocation</type>
+ </association>
+ </field>
</fields>
</class>
<class>
@@ -2650,6 +2658,38 @@
<defaultValue>2.0-beta-1-SNAPSHOT</defaultValue>
<description>The minimum version of Maven required</description>
<required>false</required>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>Relocation</name>
+ <version>4.0.0</version>
+ <description>Describes where an artifact has moved to. If any of the
values are omitted, it is assumed to be the
+ same as it was before.</description>
+ <fields>
+ <field>
+ <name>groupId</name>
+ <version>4.0.0</version>
+ <description>The group the artifact has moved to</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>artifactId</name>
+ <version>4.0.0</version>
+ <description>The new artifact ID of the artifact</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>version</name>
+ <version>4.0.0</version>
+ <description>The new version of the artifact</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>message</name>
+ <version>4.0.0</version>
+ <description>An additional message to show the user about the move,
such as the reason.</description>
+ <type>String</type>
</field>
</fields>
</class>
Modified:
maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
---
maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
(original)
+++
maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
Thu Jul 21 17:31:44 2005
@@ -17,19 +17,18 @@
*/
import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.model.Dependency;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.reporting.AbstractMavenReportRenderer;
import org.apache.maven.reporting.AbstractMavenReport;
+import org.apache.maven.reporting.AbstractMavenReportRenderer;
import org.apache.maven.reporting.MavenReportException;
import org.codehaus.doxia.sink.Sink;
import org.codehaus.doxia.site.renderer.SiteRenderer;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
@@ -40,12 +39,11 @@
/**
* Generates the Project Dependencies report.
- *
- * @goal dependencies
- *
+ *
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl </a>
* @author <a href="mailto:[EMAIL PROTECTED]">Vincent Siveton </a>
* @version $Id$
+ * @goal dependencies
* @plexus.component
*/
public class DependenciesReport
@@ -174,8 +172,8 @@
private ArtifactRepository localRepository;
public DependenciesRenderer( Sink sink, MavenProject project, Locale
locale,
- MavenProjectBuilder mavenProjectBuilder,
ArtifactFactory artifactFactory,
- ArtifactRepository localRepository )
+ MavenProjectBuilder mavenProjectBuilder,
ArtifactFactory artifactFactory,
+ ArtifactRepository localRepository )
{
super( sink );
@@ -224,34 +222,30 @@
String description = getBundle( locale ).getString(
"report.dependencies.column.description" );
String url = getBundle( locale ).getString(
"report.dependencies.column.url" );
- tableHeader( new String[] { groupId, artifactId, version,
description, url } );
+ tableHeader( new String[]{groupId, artifactId, version,
description, url} );
for ( Iterator i = dependencies.iterator(); i.hasNext(); )
{
Dependency dependency = (Dependency) i.next();
- Artifact artifact = artifactFactory.createArtifact(
dependency.getGroupId(),
-
dependency.getArtifactId(),
+ Artifact artifact = artifactFactory.createArtifact(
dependency.getGroupId(), dependency.getArtifactId(),
dependency.getVersion(), dependency.getScope(),
dependency.getType() );
- MavenProject artifactProject = null;
+ MavenProject artifactProject;
try
{
+ // TODO: can we use @requiresDependencyResolution instead,
and capture the depth of artifacts in the artifact itself?
artifactProject = getMavenProjectFromRepository( artifact,
localRepository );
}
catch ( ProjectBuildingException e )
{
throw new IllegalArgumentException(
- "Can't find a valid
Maven project in the repository for the artifact ["
- + artifact + "]."
);
+ "Can't find a valid Maven project in the repository
for the artifact [" + artifact + "]." );
}
- tableRow( new String[] {
- dependency.getGroupId(),
- dependency.getArtifactId(),
- dependency.getVersion(),
+ tableRow( new String[]{dependency.getGroupId(),
dependency.getArtifactId(), dependency.getVersion(),
artifactProject.getDescription(),
- createLinkPatternedText( artifactProject.getUrl(),
artifactProject.getUrl() ) } );
+ createLinkPatternedText( artifactProject.getUrl(),
artifactProject.getUrl() )} );
}
endTable();
@@ -273,13 +267,13 @@
tableCaption( getBundle( locale ).getString(
"report.transitivedependencies.intro" ) );
- tableHeader( new String[] { groupId, artifactId, version,
description, url } );
+ tableHeader( new String[]{groupId, artifactId, version,
description, url} );
for ( Iterator i = artifacts.iterator(); i.hasNext(); )
{
Artifact artifact = (Artifact) i.next();
- MavenProject artifactProject = null;
+ MavenProject artifactProject;
try
{
artifactProject = getMavenProjectFromRepository(
artifact, localRepository );
@@ -287,15 +281,11 @@
catch ( ProjectBuildingException e )
{
throw new IllegalArgumentException(
- "Can't find a
valid Maven project in the repository for the artifact ["
- + artifact +
"]." );
+ "Can't find a valid Maven project in the
repository for the artifact [" + artifact + "]." );
}
- tableRow( new String[] {
- artifact.getGroupId(),
- artifact.getArtifactId(),
- artifact.getVersion(),
+ tableRow( new String[]{artifact.getGroupId(),
artifact.getArtifactId(), artifact.getVersion(),
artifactProject.getDescription(),
- createLinkPatternedText( artifactProject.getUrl(),
artifactProject.getUrl() ) } );
+ createLinkPatternedText( artifactProject.getUrl(),
artifactProject.getUrl() )} );
}
endTable();
@@ -307,9 +297,8 @@
/**
* Return a set of <code>Artifacts</code> which are not already
* present in the dependencies list.
- *
- * @param project
- * a Maven project
+ *
+ * @param project a Maven project
* @return a set of transitive dependencies as artifacts
*/
private Set getTransitiveDependencies( MavenProject project )
@@ -329,8 +318,7 @@
{
Dependency dependency = (Dependency) i.next();
- Artifact artifact = artifactFactory.createArtifact(
dependency.getGroupId(),
-
dependency.getArtifactId(),
+ Artifact artifact = artifactFactory.createArtifact(
dependency.getGroupId(), dependency.getArtifactId(),
dependency.getVersion(), dependency.getScope(),
dependency.getType() );
dependenciesAsArtifacts.add( artifact );
@@ -353,15 +341,14 @@
* Get the <code>Maven project</code> from the repository depending
* the <code>Artifact</code> given.
*
- * @param artifact
- * an artifact
+ * @param artifact an artifact
* @return the Maven project for the given artifact
- * @throws org.apache.maven.project.ProjectBuildingException
- * if any
+ * @throws org.apache.maven.project.ProjectBuildingException if any
*/
private MavenProject getMavenProjectFromRepository( Artifact artifact,
ArtifactRepository localRepository )
throws ProjectBuildingException
{
+ // TODO: we should use the MavenMetadataSource instead
return mavenProjectBuilder.buildFromRepository( artifact,
project.getRepositories(), localRepository );
}
}
Modified:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
---
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
(original)
+++
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
Thu Jul 21 17:31:44 2005
@@ -47,6 +47,7 @@
import org.apache.maven.project.validation.ModelValidator;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusContainer;
+import
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.context.Context;
import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -118,11 +119,22 @@
// MavenProjectBuilder Implementation
// ----------------------------------------------------------------------
+ /**
+ * @todo move to metadatasource itself?
+ */
public MavenProject buildWithDependencies( File projectDescriptor,
ArtifactRepository localRepository,
List externalProfiles )
throws ProjectBuildingException, ArtifactResolutionException
{
- ArtifactMetadataSource source = new MavenMetadataSource( this,
artifactFactory );
+ ArtifactMetadataSource source;
+ try
+ {
+ source = (ArtifactMetadataSource) container.lookup(
ArtifactMetadataSource.ROLE );
+ }
+ catch ( ComponentLookupException e )
+ {
+ throw new ProjectBuildingException( "Unable to get the artifact
metadata source component", e );
+ }
return buildWithDependencies( projectDescriptor, localRepository,
source, externalProfiles );
}
Modified:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
---
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
(original)
+++
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
Thu Jul 21 17:31:44 2005
@@ -29,9 +29,11 @@
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Exclusion;
+import org.apache.maven.model.Relocation;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.project.ProjectBuildingException;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
import java.util.ArrayList;
import java.util.HashSet;
@@ -44,46 +46,89 @@
* @version $Id$
*/
public class MavenMetadataSource
+ extends AbstractLogEnabled
implements ArtifactMetadataSource
{
private MavenProjectBuilder mavenProjectBuilder;
private ArtifactFactory artifactFactory;
- // TODO: Remove resolver from params list.
- public MavenMetadataSource( MavenProjectBuilder projectBuilder,
ArtifactFactory artifactFactory )
- {
- this.mavenProjectBuilder = projectBuilder;
- this.artifactFactory = artifactFactory;
- }
-
+ /**
+ * Retrieve the metadata for the project from the repository.
+ * Uses the ProjectBuilder, to enable post-processing and inheritance
calculation before retrieving the
+ * associated artifacts.
+ *
+ * @todo this a very thin wrapper around a project builder - is it needed?
+ */
public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository
localRepository, List remoteRepositories )
throws ArtifactMetadataRetrievalException
{
- // TODO: only metadata is really needed - resolve as metadata
- Artifact pomArtifact = artifactFactory.createProjectArtifact(
artifact.getGroupId(), artifact.getArtifactId(),
-
artifact.getVersion(), artifact.getScope() );
-
- // TODO: this a very thin wrapper around a project builder - is it
needed?
List dependencies;
+ MavenProject p;
- // Use the ProjectBuilder, to enable post-processing and inheritance
calculation before retrieving the
- // associated artifacts.
- try
+ Artifact pomArtifact;
+ boolean done = false;
+ do
{
- MavenProject p = mavenProjectBuilder.buildFromRepository(
pomArtifact, remoteRepositories,
-
localRepository );
- dependencies = p.getDependencies();
- artifact.setDownloadUrl( pomArtifact.getDownloadUrl() );
+ // TODO: only metadata is really needed - resolve as metadata
+ pomArtifact = artifactFactory.createProjectArtifact(
artifact.getGroupId(), artifact.getArtifactId(),
+
artifact.getVersion(), artifact.getScope() );
+
+ try
+ {
+ p = mavenProjectBuilder.buildFromRepository( pomArtifact,
remoteRepositories, localRepository );
+ }
+ catch ( ProjectBuildingException e )
+ {
+ throw new ArtifactMetadataRetrievalException( "Unable to read
the metadata file", e );
+ }
+
+ Relocation relocation = null;
+
+ if ( p.getDistributionManagement() != null )
+ {
+ relocation = p.getDistributionManagement().getRelocation();
+ }
+ if ( relocation != null )
+ {
+ if ( relocation.getGroupId() != null )
+ {
+ artifact.setGroupId( relocation.getGroupId() );
+ }
+ if ( relocation.getArtifactId() != null )
+ {
+ artifact.setArtifactId( relocation.getArtifactId() );
+ }
+ if ( relocation.getVersion() != null )
+ {
+ artifact.setVersion( relocation.getVersion() );
+ }
+
+ String message = pomArtifact + " has been relocated to " +
artifact + ".\n";
+
+ if ( relocation.getMessage() != null )
+ {
+ message += relocation.getMessage();
+ }
+
+// getLogger().warn( message );
+ }
+ else
+ {
+ done = true;
+ }
+ }
+ while ( !done );
+ dependencies = p.getDependencies();
+ artifact.setDownloadUrl( pomArtifact.getDownloadUrl() );
+
+ try
+ {
Set artifacts = createArtifacts( artifactFactory, dependencies,
artifact.getScope(),
artifact.getDependencyFilter() );
return new ResolutionGroup( artifacts,
p.getRemoteArtifactRepositories() );
- }
- catch ( ProjectBuildingException e )
- {
- throw new ArtifactMetadataRetrievalException( "Unable to read the
metadata file", e );
}
catch ( InvalidVersionSpecificationException e )
{
Modified:
maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
---
maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml
(original)
+++
maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml
Thu Jul 21 17:31:44 2005
@@ -124,9 +124,22 @@
<implementation>org.apache.maven.project.validation.DefaultModelValidator</implementation>
</component>
+ <component>
+ <role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
+
<implementation>org.apache.maven.project.artifact.MavenMetadataSource</implementation>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.project.MavenProjectBuilder</role>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
+ </requirement>
+ </requirements>
+ </component>
+
<!-- ********************* FIXME *******************************************
- | I realize this is duplicated but allows the project builder to work by
itself
- -->
+| I realize this is duplicated but allows the project builder to work by itself
+-->
<component>
<role>org.apache.maven.project.path.PathTranslator</role>
<implementation>org.apache.maven.project.path.DefaultPathTranslator</implementation>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]