You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by br...@apache.org on 2008/04/08 03:24:11 UTC
svn commit: r645751 - in /archiva/trunk: archiva-cli/
archiva-cli/src/main/java/org/apache/maven/archiva/cli/
archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/src/main/java/org/apache/archiva/consumers/dependencytree/
Author: brett
Date: Mon Apr 7 18:24:10 2008
New Revision: 645751
URL: http://svn.apache.org/viewvc?rev=645751&view=rev
Log:
a couple of workarounds to force "offline" behaviour
Modified:
archiva/trunk/archiva-cli/pom.xml
archiva/trunk/archiva-cli/src/main/java/org/apache/maven/archiva/cli/ArchivaCli.java
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/src/main/java/org/apache/archiva/consumers/dependencytree/DependencyTreeGeneratorConsumer.java
Modified: archiva/trunk/archiva-cli/pom.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-cli/pom.xml?rev=645751&r1=645750&r2=645751&view=diff
==============================================================================
--- archiva/trunk/archiva-cli/pom.xml (original)
+++ archiva/trunk/archiva-cli/pom.xml Mon Apr 7 18:24:10 2008
@@ -48,6 +48,11 @@
<artifactId>archiva-converter</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-file</artifactId>
+ <version>1.0-beta-2</version>
+ </dependency>
+ <dependency>
<groupId>com.google.code.cli-parser</groupId>
<artifactId>cli</artifactId>
<version>7</version>
Modified: archiva/trunk/archiva-cli/src/main/java/org/apache/maven/archiva/cli/ArchivaCli.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-cli/src/main/java/org/apache/maven/archiva/cli/ArchivaCli.java?rev=645751&r1=645750&r2=645751&view=diff
==============================================================================
--- archiva/trunk/archiva-cli/src/main/java/org/apache/maven/archiva/cli/ArchivaCli.java (original)
+++ archiva/trunk/archiva-cli/src/main/java/org/apache/maven/archiva/cli/ArchivaCli.java Mon Apr 7 18:24:10 2008
@@ -19,8 +19,19 @@
* under the License.
*/
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
import org.apache.commons.lang.StringUtils;
-import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.maven.archiva.consumers.ConsumerException;
import org.apache.maven.archiva.consumers.InvalidRepositoryContentConsumer;
@@ -31,26 +42,13 @@
import org.apache.maven.archiva.repository.RepositoryException;
import org.apache.maven.archiva.repository.scanner.RepositoryScanStatistics;
import org.apache.maven.archiva.repository.scanner.RepositoryScanner;
+import org.apache.maven.artifact.manager.WagonManager;
import org.codehaus.plexus.spring.PlexusClassPathXmlApplicationContext;
import org.codehaus.plexus.spring.PlexusToSpringUtils;
import com.sampullara.cli.Args;
import com.sampullara.cli.Argument;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
/**
* ArchivaCli
*
@@ -144,8 +142,14 @@
}
private void doScan( String path, String[] consumers )
- throws ConsumerException
+ throws ConsumerException, MalformedURLException
{
+ // hack around poorly configurable project builder by pointing all repositories back at this location to be self
+ // contained
+ WagonManager wagonManager =
+ (WagonManager) applicationContext.getBean( PlexusToSpringUtils.buildSpringId( WagonManager.class.getName() ) );
+ wagonManager.addMirror( "internal", "*", new File( path ).toURL().toExternalForm() );
+
ManagedRepositoryConfiguration repo = new ManagedRepositoryConfiguration();
repo.setId( "cliRepo" );
repo.setName( "Archiva CLI Provided Repo" );
@@ -218,7 +222,7 @@
}
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings( "unchecked" )
private Map<String, KnownRepositoryContentConsumer> getConsumers()
{
return PlexusToSpringUtils.lookupMap( "knownRepositoryContentConsumer", applicationContext );
Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/src/main/java/org/apache/archiva/consumers/dependencytree/DependencyTreeGeneratorConsumer.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/src/main/java/org/apache/archiva/consumers/dependencytree/DependencyTreeGeneratorConsumer.java?rev=645751&r1=645750&r2=645751&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/src/main/java/org/apache/archiva/consumers/dependencytree/DependencyTreeGeneratorConsumer.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/src/main/java/org/apache/archiva/consumers/dependencytree/DependencyTreeGeneratorConsumer.java Mon Apr 7 18:24:10 2008
@@ -22,8 +22,10 @@
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
+import java.lang.reflect.Field;
import java.net.MalformedURLException;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import org.apache.commons.io.IOUtils;
@@ -39,6 +41,7 @@
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
import org.apache.maven.artifact.resolver.ArtifactCollector;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.project.DefaultMavenProjectBuilder;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.project.ProjectBuildingException;
@@ -92,6 +95,14 @@
private String repositoryLocation;
+ private final DefaultRepositoryLayout layout = new DefaultRepositoryLayout();
+
+ private ArtifactRepository localArtifactRepository;
+
+ private Field rawProjectCacheField;
+
+ private Field processedProjectCacheField;
+
public String getDescription()
{
return "Generate dependency tree metadata for tracking changes across algorithms";
@@ -127,6 +138,17 @@
// This is a bit crappy, it would be better to operate entirely within
// the base repository, but would need to adjust maven-artifact
localRepository = new File( System.getProperty( "user.home" ), ".m2/repository" );
+ try
+ {
+ localArtifactRepository =
+ artifactRepositoryFactory.createArtifactRepository( "local",
+ localRepository.toURL().toExternalForm(),
+ layout, null, null );
+ }
+ catch ( MalformedURLException e )
+ {
+ throw new ConsumerException( e.getMessage(), e );
+ }
}
}
@@ -147,27 +169,18 @@
public void processFile( String path )
throws ConsumerException
{
- DefaultRepositoryLayout layout = new DefaultRepositoryLayout();
-
- ArtifactRepository localRepository;
MavenProject project;
try
{
- localRepository =
- artifactRepositoryFactory.createArtifactRepository( "local",
- this.localRepository.toURL().toExternalForm(),
- layout, null, null );
+ project = projectBuilder.build( new File( repositoryLocation, path ), localArtifactRepository, null, false );
- project = projectBuilder.build( new File( repositoryLocation, path ), localRepository, null, false );
+ // manually flush out the cache for memory concerns and more accurate building
+ flushProjectCache( projectBuilder );
}
catch ( ProjectBuildingException e )
{
throw new ConsumerException( e.getMessage(), e );
}
- catch ( MalformedURLException e )
- {
- throw new ConsumerException( e.getMessage(), e );
- }
DependencyNode rootNode;
try
@@ -176,7 +189,7 @@
ArtifactFilter artifactFilter = null;
rootNode =
- dependencyTreeBuilder.buildDependencyTree( project, localRepository, artifactFactory,
+ dependencyTreeBuilder.buildDependencyTree( project, localArtifactRepository, artifactFactory,
artifactMetadataSource, artifactFilter, artifactCollector );
}
catch ( DependencyTreeBuilderException e )
@@ -221,6 +234,33 @@
finally
{
IOUtils.closeQuietly( writer );
+ }
+ }
+
+ private void flushProjectCache( MavenProjectBuilder projectBuilder )
+ {
+ try
+ {
+ if ( rawProjectCacheField == null )
+ {
+ rawProjectCacheField = DefaultMavenProjectBuilder.class.getDeclaredField( "rawProjectCache" );
+ rawProjectCacheField.setAccessible( true );
+ }
+
+ if ( processedProjectCacheField == null )
+ {
+ processedProjectCacheField =
+ DefaultMavenProjectBuilder.class.getDeclaredField( "processedProjectCache" );
+ processedProjectCacheField.setAccessible( true );
+ }
+
+ rawProjectCacheField.set( projectBuilder, new HashMap() );
+
+ processedProjectCacheField.set( projectBuilder, new HashMap() );
+ }
+ catch ( Exception e )
+ {
+ throw new RuntimeException( e );
}
}