As an extension that people could optionally download I think would be fine.

I'd be -1 on including this in the core.

On Mar 28, 2011, at 9:55 AM, br...@apache.org wrote:

> Author: brett
> Date: Mon Mar 28 13:55:50 2011
> New Revision: 1086237
> 
> URL: http://svn.apache.org/viewvc?rev=1086237&view=rev
> Log:
> draft of a way that MNG-3989 could be handled in Maven 3.x, though there are 
> probably better ways
> 
> Added:
>    maven/sandbox/trunk/examples/MNG-3989-maven3/
>      - copied from r1086232, maven/sandbox/trunk/examples/MNG-3989/
>    maven/sandbox/trunk/examples/MNG-3989-maven3/modules/repository/
>      - copied from r1086232, 
> maven/sandbox/trunk/examples/MNG-3989/repository/src/repository/
>    maven/sandbox/trunk/examples/extensions/bundled-repository-extension/   
> (with props)
>    
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/pom.xml  
>  (with props)
>    maven/sandbox/trunk/examples/extensions/bundled-repository-extension/src/
>    
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/src/main/
>    
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/src/main/java/
>    
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/src/main/java/org/
>    
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/src/main/java/org/apache/
>    
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/src/main/java/org/apache/maven/
>    
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/src/main/java/org/apache/maven/examples/
>    
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/src/main/java/org/apache/maven/examples/bundledrepository/
>    
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/src/main/java/org/apache/maven/examples/bundledrepository/BundledRepositoryMavenExtension.java
>    (with props)
> Removed:
>    maven/sandbox/trunk/examples/MNG-3989-maven3/repository/src/repository/
> Modified:
>    maven/sandbox/trunk/examples/MNG-3989-maven3/modules/pom.xml
>    maven/sandbox/trunk/examples/MNG-3989-maven3/pom.xml
> 
> Modified: maven/sandbox/trunk/examples/MNG-3989-maven3/modules/pom.xml
> URL: 
> http://svn.apache.org/viewvc/maven/sandbox/trunk/examples/MNG-3989-maven3/modules/pom.xml?rev=1086237&r1=1086232&r2=1086237&view=diff
> ==============================================================================
> --- maven/sandbox/trunk/examples/MNG-3989-maven3/modules/pom.xml (original)
> +++ maven/sandbox/trunk/examples/MNG-3989-maven3/modules/pom.xml Mon Mar 28 
> 13:55:50 2011
> @@ -9,15 +9,16 @@
>   <artifactId>modules</artifactId>
>   <name>modules</name>
>   <packaging>pom</packaging>
> -  <dependencies>
> -    <dependency>
> -      <groupId>test.MNG3989</groupId>
> -      <artifactId>repository</artifactId>
> -      <version>${project.version}</version>
> -      <type>pom</type>
> -    </dependency>
> -  </dependencies>
>   <modules>
>     <module>my-artifact</module>
>   </modules>
> +  <build>
> +    <extensions>
> +      <extension>
> +        <groupId>org.apache.maven.examples</groupId>
> +        <artifactId>bundled-repository-extension</artifactId>
> +        <version>1.0-SNAPSHOT</version>
> +      </extension>
> +    </extensions>
> +  </build>
> </project>
> 
> Modified: maven/sandbox/trunk/examples/MNG-3989-maven3/pom.xml
> URL: 
> http://svn.apache.org/viewvc/maven/sandbox/trunk/examples/MNG-3989-maven3/pom.xml?rev=1086237&r1=1086232&r2=1086237&view=diff
> ==============================================================================
> --- maven/sandbox/trunk/examples/MNG-3989-maven3/pom.xml (original)
> +++ maven/sandbox/trunk/examples/MNG-3989-maven3/pom.xml Mon Mar 28 13:55:50 
> 2011
> @@ -7,7 +7,6 @@
>   <name>MNG-3989</name>
>   <packaging>pom</packaging>
>   <modules>
> -    <module>repository</module>
>     <module>modules</module>
>   </modules>
> </project>
> 
> Propchange: 
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/
> ------------------------------------------------------------------------------
> --- svn:ignore (added)
> +++ svn:ignore Mon Mar 28 13:55:50 2011
> @@ -0,0 +1 @@
> +target
> 
> Added: 
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/pom.xml
> URL: 
> http://svn.apache.org/viewvc/maven/sandbox/trunk/examples/extensions/bundled-repository-extension/pom.xml?rev=1086237&view=auto
> ==============================================================================
> --- 
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/pom.xml 
> (added)
> +++ 
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/pom.xml 
> Mon Mar 28 13:55:50 2011
> @@ -0,0 +1,41 @@
> +<?xml version="1.0"?>
> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
> http://maven.apache.org/xsd/maven-4.0.0.xsd"; 
> xmlns="http://maven.apache.org/POM/4.0.0";
> +    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> +  <modelVersion>4.0.0</modelVersion>
> +  <groupId>org.apache.maven.examples</groupId>
> +  <version>1.0-SNAPSHOT</version>
> +  <artifactId>bundled-repository-extension</artifactId>
> +  <name>bundled-repository-extension</name>
> +  <properties>
> +    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> +  </properties>
> +  <dependencies>
> +    <dependency>
> +      <groupId>org.apache.maven</groupId>
> +      <artifactId>maven-compat</artifactId>
> +      <version>3.0</version>
> +    </dependency>
> +    <dependency>
> +      <groupId>org.apache.maven</groupId>
> +      <artifactId>maven-core</artifactId>
> +      <version>3.0</version>
> +    </dependency>
> +  </dependencies>
> +  <build>
> +    <plugins>
> +      <plugin>
> +        <groupId>org.codehaus.plexus</groupId>
> +        <artifactId>plexus-component-metadata</artifactId>
> +        <version>1.5.5</version>
> +        <executions>
> +          <execution>
> +            <goals>
> +              <goal>generate-metadata</goal>
> +              <goal>generate-test-metadata</goal>
> +            </goals>
> +          </execution>
> +        </executions>
> +      </plugin>
> +    </plugins>
> +  </build>
> +</project>
> 
> Propchange: 
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/pom.xml
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Added: 
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/src/main/java/org/apache/maven/examples/bundledrepository/BundledRepositoryMavenExtension.java
> URL: 
> http://svn.apache.org/viewvc/maven/sandbox/trunk/examples/extensions/bundled-repository-extension/src/main/java/org/apache/maven/examples/bundledrepository/BundledRepositoryMavenExtension.java?rev=1086237&view=auto
> ==============================================================================
> --- 
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/src/main/java/org/apache/maven/examples/bundledrepository/BundledRepositoryMavenExtension.java
>  (added)
> +++ 
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/src/main/java/org/apache/maven/examples/bundledrepository/BundledRepositoryMavenExtension.java
>  Mon Mar 28 13:55:50 2011
> @@ -0,0 +1,61 @@
> +package org.apache.maven.examples.bundledrepository;
> +
> +import org.apache.maven.AbstractMavenLifecycleParticipant;
> +import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
> +import org.apache.maven.artifact.repository.ArtifactRepository;
> +import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
> +import org.apache.maven.execution.MavenSession;
> +import org.apache.maven.execution.RuntimeInformation;
> +import org.apache.maven.project.MavenProject;
> +import org.codehaus.plexus.component.annotations.Component;
> +import org.codehaus.plexus.component.annotations.Requirement;
> +import org.codehaus.plexus.logging.Logger;
> +
> +import java.io.File;
> +import java.net.MalformedURLException;
> +import java.util.List;
> +import java.util.ArrayList;
> +
> +@Component( role = AbstractMavenLifecycleParticipant.class, hint = 
> "bundledrepository" )
> +public class BundledRepositoryMavenExtension
> +    extends AbstractMavenLifecycleParticipant
> +{
> +    @Requirement
> +    private Logger logger;
> +
> +    @Requirement
> +    RuntimeInformation runtime;
> +
> +    @Requirement
> +    private ArtifactRepositoryFactory factory;
> +
> +    public void afterProjectsRead( MavenSession session ) {
> +        // Currently a dumb implementation - some searching & configuration 
> via execution properties might help
> +        //  or better adding in to the resolution model with a new 
> repository type
> +
> +        // Search for projects that have a repository
> +        boolean found = false;
> +        List<ArtifactRepository> artifactRepositories = new 
> ArrayList<ArtifactRepository>();
> +        for ( MavenProject project : session.getProjects() ) {
> +            File repositoryDir = new File( project.getBasedir(), 
> "repository" );
> +            if ( repositoryDir.exists() && repositoryDir.isDirectory() ) {
> +                try {
> +                    logger.debug( "Found repository in project " + 
> project.getId() + " under " + repositoryDir );
> +                    artifactRepositories.add( 
> factory.createArtifactRepository( "bundledrepository", 
> repositoryDir.toURL().toExternalForm(), new DefaultRepositoryLayout(), null, 
> null ) );
> +                }
> +                catch ( MalformedURLException e ) {
> +                    logger.error( "Ignoring bad URL: " + e.getMessage() );
> +                }
> +            }
> +        }
> +
> +        // Add the repository to all projects
> +        for ( MavenProject project : session.getProjects() ) {
> +            List<ArtifactRepository> repos = new 
> ArrayList<ArtifactRepository>( project.getRemoteArtifactRepositories() );
> +            repos.addAll( artifactRepositories );
> +            project.setRemoteArtifactRepositories( repos );
> +            logger.debug( "Project " + project.getId() + " now using 
> repositories: " + repos );
> +        }
> +    }
> +
> +}
> 
> Propchange: 
> maven/sandbox/trunk/examples/extensions/bundled-repository-extension/src/main/java/org/apache/maven/examples/bundledrepository/BundledRepositoryMavenExtension.java
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> 

Thanks,

Jason

----------------------------------------------------------
Jason van Zyl
Founder,  Apache Maven
http://twitter.com/jvanzyl
---------------------------------------------------------

We all have problems. How we deal with them is a measure of our worth.

 -- Unknown



Reply via email to