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