You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2015/12/31 20:47:48 UTC
svn commit: r1722459 - in /maven/plugins/trunk/maven-assembly-plugin: ./
src/main/java/org/apache/maven/plugins/assembly/archive/phase/
src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/
src/main/java/org/apache/maven/plugins/assem...
Author: rfscholte
Date: Thu Dec 31 19:47:48 2015
New Revision: 1722459
URL: http://svn.apache.org/viewvc?rev=1722459&view=rev
Log:
Embed maven-repository-builder, temporary allow maven-compat with compile scope
Added:
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/ (with props)
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/DefaultRepositoryAssembler.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryAssembler.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryAssemblyException.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryBuilderConfigSource.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/ (with props)
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/DefaultRepositoryInfo.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/GroupVersionAlignment.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/RepositoryInfo.java
Modified:
maven/plugins/trunk/maven-assembly-plugin/pom.xml
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhase.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/GroupVersionAlignmentWrapper.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/RepoBuilderConfigSourceWrapper.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/RepoInfoWrapper.java
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhaseTest.java
Modified: maven/plugins/trunk/maven-assembly-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/pom.xml?rev=1722459&r1=1722458&r2=1722459&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/pom.xml Thu Dec 31 19:47:48 2015
@@ -93,7 +93,7 @@ under the License.
<groupId>org.apache.maven</groupId>
<artifactId>maven-compat</artifactId>
<version>${mavenVersion}</version>
- <scope>test</scope>
+<!-- <scope>test</scope> -->
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
@@ -166,9 +166,9 @@ under the License.
<version>3.0.22</version>
</dependency>
<dependency>
- <groupId>org.apache.maven.shared</groupId>
- <artifactId>maven-repository-builder</artifactId>
- <version>1.1-SNAPSHOT</version>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-testing</groupId>
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhase.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhase.java?rev=1722459&r1=1722458&r2=1722459&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhase.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhase.java Thu Dec 31 19:47:48 2015
@@ -28,12 +28,12 @@ import org.apache.maven.plugins.assembly
import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
import org.apache.maven.plugins.assembly.model.Assembly;
import org.apache.maven.plugins.assembly.model.Repository;
+import org.apache.maven.plugins.assembly.repository.RepositoryAssembler;
+import org.apache.maven.plugins.assembly.repository.RepositoryAssemblyException;
+import org.apache.maven.plugins.assembly.repository.RepositoryBuilderConfigSource;
+import org.apache.maven.plugins.assembly.repository.model.RepositoryInfo;
import org.apache.maven.plugins.assembly.utils.AssemblyFormatUtils;
import org.apache.maven.plugins.assembly.utils.TypeConversionUtils;
-import org.apache.maven.shared.repository.RepositoryAssembler;
-import org.apache.maven.shared.repository.RepositoryAssemblyException;
-import org.apache.maven.shared.repository.RepositoryBuilderConfigSource;
-import org.apache.maven.shared.repository.model.RepositoryInfo;
import org.codehaus.plexus.archiver.Archiver;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/GroupVersionAlignmentWrapper.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/GroupVersionAlignmentWrapper.java?rev=1722459&r1=1722458&r2=1722459&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/GroupVersionAlignmentWrapper.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/GroupVersionAlignmentWrapper.java Thu Dec 31 19:47:48 2015
@@ -27,7 +27,7 @@ import java.util.List;
* @version $Id$
*/
class GroupVersionAlignmentWrapper
- implements org.apache.maven.shared.repository.model.GroupVersionAlignment
+ implements org.apache.maven.plugins.assembly.repository.model.GroupVersionAlignment
{
private final GroupVersionAlignment alignment;
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/RepoBuilderConfigSourceWrapper.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/RepoBuilderConfigSourceWrapper.java?rev=1722459&r1=1722458&r2=1722459&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/RepoBuilderConfigSourceWrapper.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/RepoBuilderConfigSourceWrapper.java Thu Dec 31 19:47:48 2015
@@ -21,8 +21,8 @@ package org.apache.maven.plugins.assembl
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
+import org.apache.maven.plugins.assembly.repository.RepositoryBuilderConfigSource;
import org.apache.maven.project.MavenProject;
-import org.apache.maven.shared.repository.RepositoryBuilderConfigSource;
/**
* @version $Id$
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/RepoInfoWrapper.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/RepoInfoWrapper.java?rev=1722459&r1=1722458&r2=1722459&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/RepoInfoWrapper.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/archive/phase/wrappers/RepoInfoWrapper.java Thu Dec 31 19:47:48 2015
@@ -21,7 +21,7 @@ package org.apache.maven.plugins.assembl
import org.apache.maven.plugins.assembly.model.GroupVersionAlignment;
import org.apache.maven.plugins.assembly.model.Repository;
-import org.apache.maven.shared.repository.model.RepositoryInfo;
+import org.apache.maven.plugins.assembly.repository.model.RepositoryInfo;
import java.util.ArrayList;
import java.util.List;
Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Thu Dec 31 19:47:48 2015
@@ -0,0 +1 @@
+MASSEMBLY-\d+
Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/
------------------------------------------------------------------------------
bugtraq:url = http://jira.codehaus.org/browse/%BUGID%
Added: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/DefaultRepositoryAssembler.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/DefaultRepositoryAssembler.java?rev=1722459&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/DefaultRepositoryAssembler.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/DefaultRepositoryAssembler.java Thu Dec 31 19:47:48 2015
@@ -0,0 +1,734 @@
+package org.apache.maven.plugins.assembly.repository;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.ArtifactUtils;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.Versioning;
+import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.versioning.VersionRange;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.model.Exclusion;
+import org.apache.maven.plugins.assembly.repository.model.GroupVersionAlignment;
+import org.apache.maven.plugins.assembly.repository.model.RepositoryInfo;
+import org.apache.maven.project.DefaultMavenProjectBuilder;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.shared.artifact.filter.PatternExcludesArtifactFilter;
+import org.apache.maven.shared.artifact.filter.PatternIncludesArtifactFilter;
+import org.apache.maven.shared.artifact.filter.ScopeArtifactFilter;
+import org.apache.maven.shared.utils.io.FileUtils;
+import org.apache.maven.shared.utils.io.IOUtil;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.component.annotations.Requirement;
+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;
+import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+import java.lang.reflect.Field;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TimeZone;
+
+import static org.apache.commons.codec.digest.DigestUtils.md5Hex;
+import static org.apache.commons.codec.digest.DigestUtils.shaHex;
+
+/**
+ * @author Jason van Zyl
+ */
+
+// todo will need to pop the processed project cache using reflection
+@Component( role = RepositoryAssembler.class )
+public class DefaultRepositoryAssembler
+ extends AbstractLogEnabled
+ implements RepositoryAssembler, Contextualizable
+{
+ private static final String[] PREFERRED_RESOLVER_HINTS = { "project-cache-aware", // Provided in Maven 2.1-SNAPSHOT
+ "default" };
+
+ protected static final TimeZone UTC_TIME_ZONE = TimeZone.getTimeZone( "UTC" );
+
+ protected static final String UTC_TIMESTAMP_PATTERN = "yyyyMMddHHmmss";
+
+ @Requirement
+ protected ArtifactFactory artifactFactory;
+
+ // Replaced by Contextualizable code, to select the resolver in order of preference.
+ //
+ // @plexus.requirement
+ //
+ protected ArtifactResolver artifactResolver;
+
+ @Requirement
+ protected ArtifactRepositoryLayout repositoryLayout;
+
+ @Requirement
+ protected ArtifactRepositoryFactory artifactRepositoryFactory;
+
+ @Requirement
+ protected ArtifactMetadataSource metadataSource;
+
+ @Requirement
+ protected MavenProjectBuilder projectBuilder;
+
+ public DefaultRepositoryAssembler()
+ {
+ // used for plexus init.
+ }
+
+ public DefaultRepositoryAssembler( ArtifactFactory artifactFactory, ArtifactResolver artifactResolver,
+ ArtifactRepositoryLayout repositoryLayout,
+ ArtifactRepositoryFactory artifactRepositoryFactory,
+ ArtifactMetadataSource metadataSource, MavenProjectBuilder projectBuilder )
+ {
+ // used for testing, primarily.
+ this.artifactFactory = artifactFactory;
+ this.artifactResolver = artifactResolver;
+ this.repositoryLayout = repositoryLayout;
+ this.artifactRepositoryFactory = artifactRepositoryFactory;
+ this.metadataSource = metadataSource;
+ this.projectBuilder = projectBuilder;
+
+ enableLogging( new ConsoleLogger( Logger.LEVEL_DEBUG, getClass().getName() + "::Internal" ) );
+ }
+
+ public void buildRemoteRepository( File repositoryDirectory, RepositoryInfo repository,
+ RepositoryBuilderConfigSource configSource )
+ throws RepositoryAssemblyException
+ {
+ MavenProject project = configSource.getProject();
+ ArtifactRepository localRepository = configSource.getLocalRepository();
+
+ Map groupVersionAlignments = createGroupVersionAlignments( repository.getGroupVersionAlignments() );
+
+ ArtifactRepository targetRepository = createLocalRepository( repositoryDirectory );
+
+ ArtifactResolutionResult result = null;
+
+ Set dependencyArtifacts = project.getDependencyArtifacts();
+
+ if ( dependencyArtifacts == null )
+ {
+ Logger logger = getLogger();
+
+ if ( logger.isDebugEnabled() )
+ {
+ logger.debug( "dependency-artifact set for project: " + project.getId()
+ + " is null. Skipping repository processing." );
+ }
+
+ return;
+ }
+
+ try
+ {
+ // i have to get everything first as a filter or transformation here
+ // doesn't seem to work
+ // to align everything. If I use a filter to change the version on
+ // the fly then I get the
+ // I get JARs but no POMs, and in some directories POMs with no
+ // JARs.
+
+ // FIXME I'm not getting runtime dependencies here
+ result = artifactResolver.resolveTransitively( dependencyArtifacts, project.getArtifact(),
+ getManagedVersionMap( project ), localRepository,
+ project.getRemoteArtifactRepositories(), metadataSource );
+ }
+ catch ( ArtifactResolutionException e )
+ {
+ throw new RepositoryAssemblyException( "Error resolving artifacts: " + e.getMessage(), e );
+ }
+ catch ( ArtifactNotFoundException e )
+ {
+ throw new RepositoryAssemblyException( "Error resolving artifacts: " + e.getMessage(), e );
+ }
+ catch ( InvalidVersionSpecificationException e )
+ {
+ throw new RepositoryAssemblyException( "Error resolving artifacts: " + e.getMessage(), e );
+ }
+
+ try
+ {
+ // Blow the cache in the project builder so that we get POMs again
+ // on this next download
+ invalidateProccessedProjectCache();
+ }
+ catch ( Exception e )
+ {
+ throw new RepositoryAssemblyException( "Error invalidating the processed project cache.", e );
+ }
+
+ ArtifactFilter filter = buildRepositoryFilter( repository, project );
+
+ assembleRepositoryArtifacts( result, filter, project, localRepository, targetRepository, repositoryDirectory,
+ groupVersionAlignments );
+
+ ArtifactRepository centralRepository = findCentralRepository( project );
+
+ if ( repository.isIncludeMetadata() )
+ {
+ assembleRepositoryMetadata( result, filter, centralRepository, targetRepository );
+ }
+
+ addPomWithAncestry( project.getArtifact(), project.getRemoteArtifactRepositories(), localRepository,
+ targetRepository, groupVersionAlignments, project );
+ }
+
+ private ArtifactFilter buildRepositoryFilter( RepositoryInfo repository, MavenProject project )
+ {
+ AndArtifactFilter filter = new AndArtifactFilter();
+
+ ArtifactFilter scopeFilter = new ScopeArtifactFilter( repository.getScope() );
+ filter.add( scopeFilter );
+
+ // ----------------------------------------------------------------------------
+ // Includes
+ //
+ // We'll take everything if no includes are specified to try and make
+ // this
+ // process more maintainable. Don't want to have to update the assembly
+ // descriptor everytime the POM is updated.
+ // ----------------------------------------------------------------------------
+
+ List includes = repository.getIncludes();
+
+ if ( ( includes == null ) || includes.isEmpty() )
+ {
+ List<String> patterns = new ArrayList<String>();
+
+ Set projectArtifacts = project.getDependencyArtifacts();
+
+ if ( projectArtifacts != null )
+ {
+ for ( Object projectArtifact : projectArtifacts )
+ {
+ Artifact artifact = (Artifact) projectArtifact;
+
+ patterns.add( artifact.getDependencyConflictId() );
+ }
+ }
+
+ PatternIncludesArtifactFilter includeFilter = new PatternIncludesArtifactFilter( patterns, true );
+
+ filter.add( includeFilter );
+ }
+ else
+ {
+ filter.add( new PatternIncludesArtifactFilter( repository.getIncludes(), true ) );
+ }
+
+ // ----------------------------------------------------------------------------
+ // Excludes
+ //
+ // We still want to make it easy to exclude a few things even if we
+ // slurp
+ // up everything.
+ // ----------------------------------------------------------------------------
+
+ List excludes = repository.getExcludes();
+
+ if ( ( excludes != null ) && !excludes.isEmpty() )
+ {
+ filter.add( new PatternExcludesArtifactFilter( repository.getExcludes(), true ) );
+ }
+
+ return filter;
+ }
+
+ private void assembleRepositoryArtifacts( ArtifactResolutionResult result, ArtifactFilter filter,
+ MavenProject project, ArtifactRepository localRepository,
+ ArtifactRepository targetRepository, File repositoryDirectory,
+ Map groupVersionAlignments )
+ throws RepositoryAssemblyException
+ {
+ try
+ {
+ // Now that we have the graph, let's try to align it to versions
+ // that we want and remove
+ // the repository we previously populated.
+ FileUtils.deleteDirectory( repositoryDirectory );
+
+ FileUtils.mkdir( repositoryDirectory.getAbsolutePath() );
+
+ for ( Object o : result.getArtifacts() )
+ {
+ Artifact a = (Artifact) o;
+
+ if ( filter.include( a ) )
+ {
+ getLogger().debug( "Re-resolving: " + a + " for repository assembly." );
+
+ setAlignment( a, groupVersionAlignments );
+
+ // We need to flip it back to not being resolved so we can
+ // look for it again!
+ a.setResolved( false );
+
+ artifactResolver.resolve( a, project.getRemoteArtifactRepositories(), localRepository );
+
+ a.setVersion( a.getBaseVersion() );
+
+ File targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( a ) );
+ FileUtils.copyFile( a.getFile(), targetFile );
+
+ writeChecksums( targetFile );
+
+ addPomWithAncestry( a, project.getRemoteArtifactRepositories(), localRepository, targetRepository,
+ groupVersionAlignments, project );
+ }
+ }
+ }
+ catch ( ArtifactResolutionException e )
+ {
+ throw new RepositoryAssemblyException( "Error resolving artifacts: " + e.getMessage(), e );
+ }
+ catch ( ArtifactNotFoundException e )
+ {
+ throw new RepositoryAssemblyException( "Error resolving artifacts: " + e.getMessage(), e );
+ }
+ catch ( IOException e )
+ {
+ throw new RepositoryAssemblyException( "Error writing artifact metdata.", e );
+ }
+ }
+
+ private void addPomWithAncestry( final Artifact artifact, List remoteArtifactRepositories,
+ ArtifactRepository localRepository, ArtifactRepository targetRepository,
+ Map groupVersionAlignments, MavenProject masterProject )
+ throws RepositoryAssemblyException
+ {
+ String type = artifact.getType();
+ Map refs = masterProject.getProjectReferences();
+
+ String projectKey = ArtifactUtils.versionlessKey( artifact );
+
+ MavenProject p;
+ if ( artifact == masterProject.getArtifact() )
+ {
+ p = masterProject;
+ }
+ else if ( refs.containsKey( projectKey ) )
+ {
+ p = (MavenProject) refs.get( projectKey );
+ }
+ else
+ {
+ try
+ {
+ artifact.isSnapshot();
+
+ Artifact pomArtifact =
+ artifactFactory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(),
+ artifact.getBaseVersion() );
+
+ getLogger().debug( "Building MavenProject instance for: " + pomArtifact
+ + ". NOTE: This SHOULD BE available in the Artifact API! ...but it's not." );
+ p = projectBuilder.buildFromRepository( pomArtifact, remoteArtifactRepositories, localRepository );
+ }
+ catch ( ProjectBuildingException e )
+ {
+ throw new RepositoryAssemblyException( "Error reading POM for: " + artifact.getId(), e );
+ }
+ }
+
+ // if we're dealing with a POM artifact, then we've already copied the POM itself; only process ancestry.
+ // NOTE: We need to preserve the original artifact for comparison here.
+ if ( "pom".equals( type ) )
+ {
+ p = p.getParent();
+ }
+
+ while ( p != null )
+ {
+ Artifact destArtifact =
+ artifactFactory.createProjectArtifact( p.getGroupId(), p.getArtifactId(), p.getVersion() );
+
+ setAlignment( destArtifact, groupVersionAlignments );
+
+ File sourceFile = p.getFile();
+
+ // try to use the POM file from the project instance itself first.
+ if ( ( sourceFile == null ) || !sourceFile.exists() )
+ {
+ // something that hasn't been realigned yet...we want to read from the original location.
+ Artifact srcArtifact =
+ artifactFactory.createProjectArtifact( p.getGroupId(), p.getArtifactId(), p.getVersion() );
+
+ sourceFile = new File( localRepository.getBasedir(), localRepository.pathOf( srcArtifact ) );
+ }
+
+ if ( !sourceFile.exists() )
+ {
+ break;
+ }
+
+ File targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( destArtifact ) );
+
+ try
+ {
+ FileUtils.copyFile( sourceFile, targetFile );
+ }
+ catch ( IOException e )
+ {
+ throw new RepositoryAssemblyException( "Error writing POM metdata: " + destArtifact.getId(), e );
+ }
+
+ try
+ {
+ writeChecksums( targetFile );
+ }
+ catch ( IOException e )
+ {
+ throw new RepositoryAssemblyException( "Error writing checksums for POM: " + destArtifact.getId(), e );
+ }
+
+ p = p.getParent();
+ }
+ }
+
+ private ArtifactRepository findCentralRepository( MavenProject project )
+ {
+ ArtifactRepository centralRepository = null;
+ for ( Object o : project.getRemoteArtifactRepositories() )
+ {
+ ArtifactRepository r = (ArtifactRepository) o;
+ if ( "central".equals( r.getId() ) )
+ {
+ centralRepository = r;
+ }
+ }
+
+ return centralRepository;
+ }
+
+ private void assembleRepositoryMetadata( ArtifactResolutionResult result, ArtifactFilter filter,
+ ArtifactRepository centralRepository, ArtifactRepository targetRepository )
+ throws RepositoryAssemblyException
+ {
+ for ( Object o : result.getArtifacts() )
+ {
+ Artifact a = (Artifact) o;
+
+ if ( filter.include( a ) )
+ {
+ Versioning v = new Versioning();
+
+ v.setRelease( a.getVersion() );
+
+ v.setLatest( a.getVersion() );
+
+ v.addVersion( a.getVersion() );
+
+ v.setLastUpdated( getUtcDateFormatter().format( new Date() ) );
+
+ ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( a, v );
+ String path = targetRepository.pathOfLocalRepositoryMetadata( metadata, centralRepository );
+ File metadataFile = new File( targetRepository.getBasedir(), path );
+
+ MetadataXpp3Writer metadataWriter = new MetadataXpp3Writer();
+
+ Writer writer = null;
+ try
+ {
+ writer = new FileWriter( metadataFile );
+
+ metadataWriter.write( writer, metadata.getMetadata() );
+ }
+ catch ( IOException e )
+ {
+ throw new RepositoryAssemblyException( "Error writing artifact metdata.", e );
+ }
+ finally
+ {
+ IOUtil.close( writer );
+ }
+
+ try
+ {
+ writeChecksums( metadataFile );
+
+ File metadataFileRemote = new File( targetRepository.getBasedir(),
+ targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
+
+ FileUtils.copyFile( metadataFile, metadataFileRemote );
+
+ FileUtils.copyFile( new File( metadataFile.getParentFile(), metadataFile.getName() + ".sha1" ),
+ new File( metadataFileRemote.getParentFile(),
+ metadataFileRemote.getName() + ".sha1" ) );
+
+ FileUtils.copyFile( new File( metadataFile.getParentFile(), metadataFile.getName() + ".md5" ),
+ new File( metadataFileRemote.getParentFile(),
+ metadataFileRemote.getName() + ".md5" ) );
+ }
+ catch ( IOException e )
+ {
+ throw new RepositoryAssemblyException( "Error writing artifact metdata.", e );
+ }
+ }
+ }
+ }
+
+ private void writeChecksums( File file )
+ throws IOException, RepositoryAssemblyException
+ {
+ FileInputStream data = new FileInputStream( file );
+ String md5 = md5Hex( data ).toUpperCase();
+ data.close();
+ FileInputStream data1 = new FileInputStream( file );
+ String sha1 = shaHex( data1 ).toUpperCase();
+ data1.close();
+
+ FileUtils.fileWrite( new File( file.getParentFile(), file.getName() + ".md5" ).getAbsolutePath(),
+ md5.toLowerCase() );
+ FileUtils.fileWrite( new File( file.getParentFile(), file.getName() + ".sha1" ).getAbsolutePath(),
+ sha1.toLowerCase() );
+ }
+
+ protected Map createGroupVersionAlignments( List versionAlignments )
+ {
+ Map groupVersionAlignments = new HashMap();
+
+ if ( versionAlignments != null )
+ {
+ for ( Object versionAlignment : versionAlignments )
+ {
+ GroupVersionAlignment alignment = (GroupVersionAlignment) versionAlignment;
+
+ groupVersionAlignments.put( alignment.getId(), alignment );
+ }
+ }
+
+ return groupVersionAlignments;
+ }
+
+ protected static DateFormat getUtcDateFormatter()
+ {
+ DateFormat utcDateFormatter = new SimpleDateFormat( UTC_TIMESTAMP_PATTERN );
+ utcDateFormatter.setTimeZone( UTC_TIME_ZONE );
+ return utcDateFormatter;
+ }
+
+ protected ArtifactRepository createLocalRepository( File directory )
+ {
+ String localRepositoryUrl = directory.getAbsolutePath();
+
+ if ( !localRepositoryUrl.startsWith( "file:" ) )
+ {
+ localRepositoryUrl = "file://" + localRepositoryUrl;
+ }
+
+ return createRepository( "local", localRepositoryUrl, false, true,
+ ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
+ }
+
+ public ArtifactRepository createRepository( String repositoryId, String repositoryUrl, boolean offline,
+ boolean updateSnapshots, String globalChecksumPolicy )
+ {
+ ArtifactRepository localRepository =
+ new DefaultArtifactRepository( repositoryId, repositoryUrl, repositoryLayout );
+
+ boolean snapshotPolicySet = false;
+
+ if ( offline )
+ {
+ snapshotPolicySet = true;
+ }
+
+ if ( !snapshotPolicySet && updateSnapshots )
+ {
+ artifactRepositoryFactory.setGlobalUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );
+ }
+
+ artifactRepositoryFactory.setGlobalChecksumPolicy( globalChecksumPolicy );
+
+ return localRepository;
+ }
+
+ private void invalidateProccessedProjectCache()
+ throws Exception
+ {
+ Class klass = DefaultMavenProjectBuilder.class;
+
+ try
+ {
+ Field field = klass.getDeclaredField( "processedProjectCache" );
+
+ field.setAccessible( true );
+
+ Object cache = field.get( projectBuilder );
+
+ cache.getClass().getDeclaredMethod( "clear", null ).invoke( cache, null );
+
+ field.setAccessible( false );
+ }
+ catch ( NoSuchFieldException e )
+ {
+ // fine... no field, no cache. we'll ignore it.
+ }
+ }
+
+ private void setAlignment( Artifact artifact, Map groupVersionAlignments )
+ {
+ GroupVersionAlignment alignment = (GroupVersionAlignment) groupVersionAlignments.get( artifact.getGroupId() );
+
+ if ( alignment != null )
+ {
+ if ( !alignment.getExcludes().contains( artifact.getArtifactId() ) )
+ {
+ artifact.setVersion( alignment.getVersion() );
+ }
+ }
+ }
+
+ // TODO: Remove this, once we can depend on Maven 2.0.7 or later...in which
+ // MavenProject.getManagedVersionMap() exists. This is from MNG-1577.
+ private Map getManagedVersionMap( MavenProject project )
+ throws InvalidVersionSpecificationException
+ {
+ DependencyManagement dependencyManagement = project.getModel().getDependencyManagement();
+
+ Map<String, Artifact> map;
+ List deps = ( dependencyManagement == null ) ? null : dependencyManagement.getDependencies();
+ if ( ( deps != null ) && ( deps.size() > 0 ) )
+ {
+ map = new HashMap<String, Artifact>();
+
+ if ( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "Adding managed dependencies for " + project.getId() );
+ }
+
+ for ( Object o1 : dependencyManagement.getDependencies() )
+ {
+ Dependency d = (Dependency) o1;
+
+ VersionRange versionRange = VersionRange.createFromVersionSpec( d.getVersion() );
+ Artifact artifact =
+ artifactFactory.createDependencyArtifact( d.getGroupId(), d.getArtifactId(), versionRange,
+ d.getType(), d.getClassifier(), d.getScope(),
+ d.isOptional() );
+ if ( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( " " + artifact );
+ }
+
+ // If the dependencyManagement section listed exclusions,
+ // add them to the managed artifacts here so that transitive
+ // dependencies will be excluded if necessary.
+ if ( ( null != d.getExclusions() ) && !d.getExclusions().isEmpty() )
+ {
+ List<String> exclusions = new ArrayList<String>();
+ for ( Object o : d.getExclusions() )
+ {
+ Exclusion e = (Exclusion) o;
+ exclusions.add( e.getGroupId() + ":" + e.getArtifactId() );
+ }
+ ExcludesArtifactFilter eaf = new ExcludesArtifactFilter( exclusions );
+ artifact.setDependencyFilter( eaf );
+ }
+ else
+ {
+ artifact.setDependencyFilter( null );
+ }
+ map.put( d.getManagementKey(), artifact );
+ }
+ }
+ else
+ {
+ map = Collections.emptyMap();
+ }
+ return map;
+ }
+
+ public void contextualize( Context context )
+ throws ContextException
+ {
+ PlexusContainer container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
+
+ for ( String hint : PREFERRED_RESOLVER_HINTS )
+ {
+ try
+ {
+ artifactResolver = (ArtifactResolver) container.lookup( ArtifactResolver.ROLE, hint );
+ break;
+ }
+ catch ( ComponentLookupException e )
+ {
+ getLogger().debug( "No ArtifactResolver with hint " + hint );
+ }
+ }
+
+ if ( artifactResolver == null )
+ {
+ try
+ {
+ artifactResolver = (ArtifactResolver) container.lookup( ArtifactResolver.ROLE );
+ }
+ catch ( ComponentLookupException e )
+ {
+ getLogger().debug( "Cannot find ArtifactResolver with no hint.", e );
+ }
+ }
+
+ if ( artifactResolver == null )
+ {
+ throw new ContextException(
+ "Failed to lookup a valid ArtifactResolver implementation. Tried hints:\n" + Arrays.asList(
+ PREFERRED_RESOLVER_HINTS ) );
+ }
+ }
+}
Added: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryAssembler.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryAssembler.java?rev=1722459&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryAssembler.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryAssembler.java Thu Dec 31 19:47:48 2015
@@ -0,0 +1,34 @@
+package org.apache.maven.plugins.assembly.repository;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 java.io.File;
+
+import org.apache.maven.plugins.assembly.repository.model.RepositoryInfo;
+
+/**
+ * @author Jason van Zyl
+ */
+public interface RepositoryAssembler
+{
+ void buildRemoteRepository( File repositoryDirectory, RepositoryInfo repository,
+ RepositoryBuilderConfigSource configSource )
+ throws RepositoryAssemblyException;
+}
Added: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryAssemblyException.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryAssemblyException.java?rev=1722459&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryAssemblyException.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryAssemblyException.java Thu Dec 31 19:47:48 2015
@@ -0,0 +1,44 @@
+package org.apache.maven.plugins.assembly.repository;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+/**
+ * @author Jason van Zyl
+ */
+public class RepositoryAssemblyException
+ extends Exception
+{
+ private static final long serialVersionUID = 1L;
+
+ public RepositoryAssemblyException( String string )
+ {
+ super( string );
+ }
+
+ public RepositoryAssemblyException( String string, Throwable throwable )
+ {
+ super( string, throwable );
+ }
+
+ public RepositoryAssemblyException( Throwable throwable )
+ {
+ super( throwable );
+ }
+}
Added: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryBuilderConfigSource.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryBuilderConfigSource.java?rev=1722459&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryBuilderConfigSource.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/RepositoryBuilderConfigSource.java Thu Dec 31 19:47:48 2015
@@ -0,0 +1,35 @@
+package org.apache.maven.plugins.assembly.repository;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.repository.ArtifactRepository;
+import org.apache.maven.project.MavenProject;
+
+/**
+ *
+ */
+public interface RepositoryBuilderConfigSource
+{
+
+ MavenProject getProject();
+
+ ArtifactRepository getLocalRepository();
+
+}
Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Thu Dec 31 19:47:48 2015
@@ -0,0 +1 @@
+MASSEMBLY-\d+
Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/
------------------------------------------------------------------------------
bugtraq:url = http://jira.codehaus.org/browse/%BUGID%
Added: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/DefaultRepositoryInfo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/DefaultRepositoryInfo.java?rev=1722459&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/DefaultRepositoryInfo.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/DefaultRepositoryInfo.java Thu Dec 31 19:47:48 2015
@@ -0,0 +1,93 @@
+package org.apache.maven.plugins.assembly.repository.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 java.util.List;
+
+/**
+ *
+ */
+public class DefaultRepositoryInfo
+ implements RepositoryInfo
+{
+
+ private boolean includeMetadata;
+
+ private String scope = Artifact.SCOPE_COMPILE;
+
+ private List includes;
+
+ private List groupVersionAlignments;
+
+ private List excludes;
+
+ public List getExcludes()
+ {
+ return excludes;
+ }
+
+ public void setGroupVersionAlignments( List groupVersionAlignments )
+ {
+ this.groupVersionAlignments = groupVersionAlignments;
+ }
+
+ public void setIncludeMetadata( boolean includeMetadata )
+ {
+ this.includeMetadata = includeMetadata;
+ }
+
+ public void setIncludes( List includes )
+ {
+ this.includes = includes;
+ }
+
+ public void setScope( String scope )
+ {
+ this.scope = scope;
+ }
+
+ public List getGroupVersionAlignments()
+ {
+ return groupVersionAlignments;
+ }
+
+ public List getIncludes()
+ {
+ return includes;
+ }
+
+ public String getScope()
+ {
+ return scope;
+ }
+
+ public boolean isIncludeMetadata()
+ {
+ return includeMetadata;
+ }
+
+ public void setExcludes( List excludes )
+ {
+ this.excludes = excludes;
+ }
+
+}
Added: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/GroupVersionAlignment.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/GroupVersionAlignment.java?rev=1722459&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/GroupVersionAlignment.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/GroupVersionAlignment.java Thu Dec 31 19:47:48 2015
@@ -0,0 +1,36 @@
+package org.apache.maven.plugins.assembly.repository.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 java.util.List;
+
+/**
+ *
+ */
+public interface GroupVersionAlignment
+{
+
+ String getId();
+
+ List getExcludes();
+
+ String getVersion();
+
+}
Added: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/RepositoryInfo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/RepositoryInfo.java?rev=1722459&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/RepositoryInfo.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/repository/model/RepositoryInfo.java Thu Dec 31 19:47:48 2015
@@ -0,0 +1,40 @@
+package org.apache.maven.plugins.assembly.repository.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 java.util.List;
+
+/**
+ *
+ */
+public interface RepositoryInfo
+{
+
+ List getGroupVersionAlignments();
+
+ boolean isIncludeMetadata();
+
+ String getScope();
+
+ List getIncludes();
+
+ List getExcludes();
+
+}
Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhaseTest.java?rev=1722459&r1=1722458&r2=1722459&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhaseTest.java Thu Dec 31 19:47:48 2015
@@ -28,13 +28,13 @@ import org.apache.maven.plugins.assembly
import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
import org.apache.maven.plugins.assembly.model.Assembly;
import org.apache.maven.plugins.assembly.model.Repository;
+import org.apache.maven.plugins.assembly.repository.RepositoryAssembler;
+import org.apache.maven.plugins.assembly.repository.RepositoryAssemblyException;
+import org.apache.maven.plugins.assembly.repository.RepositoryBuilderConfigSource;
+import org.apache.maven.plugins.assembly.repository.model.RepositoryInfo;
import org.apache.maven.plugins.assembly.testutils.TestFileManager;
import org.apache.maven.plugins.assembly.utils.TypeConversionUtils;
import org.apache.maven.project.MavenProject;
-import org.apache.maven.shared.repository.RepositoryAssembler;
-import org.apache.maven.shared.repository.RepositoryAssemblyException;
-import org.apache.maven.shared.repository.RepositoryBuilderConfigSource;
-import org.apache.maven.shared.repository.model.RepositoryInfo;
import org.codehaus.plexus.archiver.Archiver;
import org.codehaus.plexus.archiver.ArchiverException;
import org.codehaus.plexus.archiver.FileSet;