You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2011/05/17 18:57:54 UTC

svn commit: r1104405 [1/6] - in /maven/sandbox/trunk/mae: ./ boms/ boms/mae-app-bom/ boms/mae-library-bom/ mae-api/ mae-api/src/ mae-api/src/main/ mae-api/src/main/java/ mae-api/src/main/java/org/ mae-api/src/main/java/org/apache/ mae-api/src/main/java...

Author: jdcasey
Date: Tue May 17 16:57:50 2011
New Revision: 1104405

URL: http://svn.apache.org/viewvc?rev=1104405&view=rev
Log:
Adding Maven App Engine (MAE) preliminary code, adapted from EMB code at http://github.com/jdcasey/EMB

Added:
    maven/sandbox/trunk/mae/
    maven/sandbox/trunk/mae/.gitignore
    maven/sandbox/trunk/mae/README.markdown
    maven/sandbox/trunk/mae/boms/
    maven/sandbox/trunk/mae/boms/mae-app-bom/
    maven/sandbox/trunk/mae/boms/mae-app-bom/pom.xml   (with props)
    maven/sandbox/trunk/mae/boms/mae-library-bom/
    maven/sandbox/trunk/mae/boms/mae-library-bom/pom.xml   (with props)
    maven/sandbox/trunk/mae/boms/pom.xml   (with props)
    maven/sandbox/trunk/mae/mae-api/
    maven/sandbox/trunk/mae/mae-api/pom.xml   (with props)
    maven/sandbox/trunk/mae/mae-api/src/
    maven/sandbox/trunk/mae/mae-api/src/main/
    maven/sandbox/trunk/mae/mae-api/src/main/java/
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/DefaultMAEExecutionRequest.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEAdvisor.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEException.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEExecutionRequest.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/PluginGoal.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/AbstractMAELibrary.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/CoreLibrary.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAEConfiguration.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAELibraries.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAELibrary.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MavenPomVersionProvider.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/StringVersionProvider.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/VersionProvider.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/ext/
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/ext/ExtensionConfiguration.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/ext/ExtensionConfigurationException.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/ext/ExtensionConfigurationLoader.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/loader/
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/loader/InstanceLibraryLoader.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/loader/MAELibraryLoader.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/loader/ServiceLibraryLoader.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/mgmt/
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/mgmt/LoadOnFinish.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/mgmt/LoadOnStart.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/mgmt/MAEManagementException.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/mgmt/MAEManagementView.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ComponentKey.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ComponentSelector.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/InstanceRegistry.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ServiceAuthorizer.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/VirtualInstance.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/io/
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/io/MAEPrompter.java   (with props)
    maven/sandbox/trunk/mae/mae-api/src/test/
    maven/sandbox/trunk/mae/mae-api/src/test/java/
    maven/sandbox/trunk/mae/mae-api/src/test/java/org/
    maven/sandbox/trunk/mae/mae-api/src/test/java/org/apache/
    maven/sandbox/trunk/mae/mae-api/src/test/java/org/apache/maven/
    maven/sandbox/trunk/mae/mae-api/src/test/java/org/apache/maven/mae/
    maven/sandbox/trunk/mae/mae-api/src/test/java/org/apache/maven/mae/ComponentSelectorTest.java   (with props)
    maven/sandbox/trunk/mae/mae-app/
    maven/sandbox/trunk/mae/mae-app/pom.xml   (with props)
    maven/sandbox/trunk/mae/mae-app/src/
    maven/sandbox/trunk/mae/mae-app/src/main/
    maven/sandbox/trunk/mae/mae-app/src/main/java/
    maven/sandbox/trunk/mae/mae-app/src/main/java/org/
    maven/sandbox/trunk/mae/mae-app/src/main/java/org/commonjava/
    maven/sandbox/trunk/mae/mae-app/src/main/java/org/commonjava/emb/
    maven/sandbox/trunk/mae/mae-app/src/main/java/org/commonjava/emb/app/
    maven/sandbox/trunk/mae/mae-app/src/main/java/org/commonjava/emb/app/AbstractEMBApplication.java   (with props)
    maven/sandbox/trunk/mae/mae-app/src/main/java/org/commonjava/emb/app/EMBApplication.java   (with props)
    maven/sandbox/trunk/mae/mae-app/src/test/
    maven/sandbox/trunk/mae/mae-app/src/test/java/
    maven/sandbox/trunk/mae/mae-app/src/test/java/org/
    maven/sandbox/trunk/mae/mae-app/src/test/java/org/commonjava/
    maven/sandbox/trunk/mae/mae-app/src/test/java/org/commonjava/emb/
    maven/sandbox/trunk/mae/mae-app/src/test/java/org/commonjava/emb/app/
    maven/sandbox/trunk/mae/mae-booter/
    maven/sandbox/trunk/mae/mae-booter/pom.xml   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/
    maven/sandbox/trunk/mae/mae-booter/src/main/
    maven/sandbox/trunk/mae/mae-booter/src/main/java/
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/Maven3BooterLibrary.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/EMBEmbedder.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/EMBEmbedderBuilder.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/EMBEmbeddingException.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/log/
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/log/BatchTransferListener.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/log/EventLogger.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/log/InteractiveTransferListener.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/main/
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/main/CliRequest.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/main/EMBCLIManager.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/main/EMBMain.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/DefaultEMBServiceManager.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/EMBServiceManager.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/UnauthorizedServiceException.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/mdo/
    maven/sandbox/trunk/mae/mae-booter/src/main/mdo/xaven.mdo   (with props)
    maven/sandbox/trunk/mae/mae-container/
    maven/sandbox/trunk/mae/mae-container/pom.xml   (with props)
    maven/sandbox/trunk/mae/mae-container/src/
    maven/sandbox/trunk/mae/mae-container/src/main/
    maven/sandbox/trunk/mae/mae-container/src/main/java/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/ExtrudablePlexusContainer.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/MAEContainer.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/InstanceBindingModule.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/SelectingTypeBinder.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/XAnnotatedBeanSource.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/XComponentDescriptorBeanModule.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/XPlexusAnnotatedBeanModule.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/XPlexusXmlBeanModule.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/lifecycle/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/lifecycle/XPlexusLifecycleManager.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/MAEBeanLocator.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/XLocatedBeans.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/XRankedBindings.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/XWatchedBeans.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/plexus/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/plexus/locators/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/plexus/locators/MAEPlexusBeanLocator.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/test/
    maven/sandbox/trunk/mae/mae-container/src/test/java/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/MAEPlexusContainerTest.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/Child.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/DefaultChild.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/DefaultSingletonOwner.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/InitializedUsingRequirement.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/MapOwner.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/SingletonLiteralOwner.java   (with props)
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/SingletonOwner.java   (with props)
    maven/sandbox/trunk/mae/pom.xml   (with props)

Added: maven/sandbox/trunk/mae/.gitignore
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/.gitignore?rev=1104405&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/.gitignore (added)
+++ maven/sandbox/trunk/mae/.gitignore Tue May 17 16:57:50 2011
@@ -0,0 +1 @@
+import-workspace
\ No newline at end of file

Added: maven/sandbox/trunk/mae/README.markdown
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/README.markdown?rev=1104405&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/README.markdown (added)
+++ maven/sandbox/trunk/mae/README.markdown Tue May 17 16:57:50 2011
@@ -0,0 +1,64 @@
+# EMB - Extensible, Modular Builds #
+
+EMB is a build tool that wraps and extends [Apache Maven](http://maven.apache.org/). Its goal is to provide a mechanism for changing the core functionality of Maven using sets of add-on libraries.
+
+## Getting Started ##
+
+The simplest way to use EMB is via the emb-booter. To do this, first add a dependency in your POM to emb-booter:
+
+    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+      <modelVersion>4.0.0</modelVersion>
+      <groupId>org.commonjava.emb.example</groupId>
+      <artifactId>example</artifactId>
+      <version>1.0-SNAPSHOT</version>
+      <properties>
+        <mavenVersion>3.0-beta-2</mavenVersion>
+        <embVersion>0.3-SNAPSHOT</embVersion>
+      </properties>
+      <dependencies>
+        <dependency>
+          <groupId>org.commonjava.emb</groupId>
+          <artifactId>emb-booter</artifactId>
+          <version>${embVersion}</version>
+        </dependency>
+      </dependencies>
+    </project>
+
+Then, create a new EMBEmbedder instance, and use it to build a project:
+
+    List<String> goals = new ArrayList<String>();
+    goals.add( "clean" );
+    goals.add( "install" );
+
+    new EMBEmbedderBuilder().build().execute( new EMBExecutionRequest().setGoals( goals ) );
+  
+## Using Services ##
+
+You can use allowed Maven components via the ServiceManager. For instance, to resolve an artifact:
+
+    EMBEmbeder emb = new EMBEmbedderBuilder().build();
+    emb.serviceManager().repositorySystem().resolve( artifact );
+  
+Or, to build a set of MavenProject instances from POM files:
+
+    EMBEmbeder emb = new EMBEmbedderBuilder().build();
+    
+    ProjectBuildingRequest req = new DefaultProjectBuildingRequest()
+                                      .setSystemProperties( System.getProperties() )
+                                      .setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL )
+                                      .setForceUpdate( true )
+                                      .setProcessPlugins( false )
+                                      .setRepositoryCache( new InternalRepositoryCache() )
+                                      .setLocalRepository( emb.serviceManager()
+                                                              .repositorySystem()
+                                                              .createLocalRepository( new File( workDir, "local-repository" ) ) );
+                             
+    List<ProjectBuildingResult> results = emb.serviceManager().projectBuilder().build( pomFiles, useReactor, req );
+    
+    List<MavenProject> projects = new ArrayList<MavenProject>( pomFiles.size() );
+    for ( final ProjectBuildingResult result : results )
+    {
+        projects.add( result.getProject() );
+    }
+

Added: maven/sandbox/trunk/mae/boms/mae-app-bom/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/boms/mae-app-bom/pom.xml?rev=1104405&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/boms/mae-app-bom/pom.xml (added)
+++ maven/sandbox/trunk/mae/boms/mae-app-bom/pom.xml Tue May 17 16:57:50 2011
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2010 Red Hat, Inc.
+  
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>mae-boms</artifactId>
+    <groupId>org.apache.maven.mae</groupId>
+    <version>0.6-SNAPSHOT</version>
+  </parent>
+  
+  <artifactId>mae-app-bom</artifactId>
+  <name>Maven App Engine: Bill-Of-Materials for Applications</name>
+  
+  <packaging>pom</packaging>
+  
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.maven.mae</groupId>
+        <artifactId>mae-app</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      
+      <dependency>
+        <groupId>org.apache.maven.mae</groupId>
+        <artifactId>mae-booter</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      
+      <dependency>
+        <groupId>org.apache.maven.mae.event</groupId>
+        <artifactId>mae-event-api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven.mae</groupId>
+        <artifactId>mae-api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven.mae.event</groupId>
+        <artifactId>mae-resolver-events</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-artifact</artifactId>
+        <version>${mavenVersion}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-compat</artifactId>
+        <version>${mavenVersion}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-core</artifactId>
+        <version>${mavenVersion}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-maeedder</artifactId>
+        <version>${mavenVersion}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-model</artifactId>
+        <version>${mavenVersion}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-model-builder</artifactId>
+        <version>${mavenVersion}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-plugin-api</artifactId>
+        <version>${mavenVersion}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-repository</artifactId>
+        <version>${mavenVersion}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-settings</artifactId>
+        <version>${mavenVersion}</version>
+      </dependency>
+      
+      <!-- NOTE: These MUST be provided by mae infrastructure! -->
+      <dependency>
+        <groupId>log4j</groupId>
+        <artifactId>log4j</artifactId>
+        <version>1.2.12</version>
+      </dependency>
+      <dependency>
+        <groupId>commons-io</groupId>
+        <artifactId>commons-io</artifactId>
+        <version>2.0</version>
+      </dependency>
+      <!-- /END infra requirements -->
+
+      <dependency>
+        <groupId>junit</groupId>
+        <artifactId>junit</artifactId>
+        <version>4.5</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven.mae.components</groupId>
+        <artifactId>mae-project-tools</artifactId>
+        <version>${project.version}</version>
+        <scope>compile</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven.mae.components</groupId>
+        <artifactId>mae-autoboxing-version-range</artifactId>
+        <version>${project.version}</version>
+        <scope>compile</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+</project>

Propchange: maven/sandbox/trunk/mae/boms/mae-app-bom/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/boms/mae-library-bom/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/boms/mae-library-bom/pom.xml?rev=1104405&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/boms/mae-library-bom/pom.xml (added)
+++ maven/sandbox/trunk/mae/boms/mae-library-bom/pom.xml Tue May 17 16:57:50 2011
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2010 Red Hat, Inc.
+  
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>mae-boms</artifactId>
+    <groupId>org.apache.maven.mae</groupId>
+    <version>0.6-SNAPSHOT</version>
+  </parent>
+  
+  <artifactId>mae-library-bom</artifactId>
+  <name>Maven App Engine: Bill-Of-Materials for Libraries</name>
+  
+  <packaging>pom</packaging>
+  
+  <dependencyManagement>
+    <dependencies>
+      <!-- <dependency>
+        <groupId>org.apache.maven.mae.event</groupId>
+        <artifactId>mae-event-api</artifactId>
+        <version>${project.version}</version>
+        <scope>provided</scope>
+      </dependency> -->
+      <dependency>
+        <groupId>org.apache.maven.mae</groupId>
+        <artifactId>mae-api</artifactId>
+        <version>${project.version}</version>
+        <scope>provided</scope>
+      </dependency>
+    
+      <!-- <dependency>
+        <groupId>org.apache.maven.mae.event</groupId>
+        <artifactId>mae-resolver-events</artifactId>
+        <version>${project.version}</version>
+        <scope>provided</scope>
+      </dependency> -->
+      
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven</artifactId>
+        <version>${mavenVersion}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+      
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-artifact</artifactId>
+        <version>${mavenVersion}</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-compat</artifactId>
+        <version>${mavenVersion}</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-core</artifactId>
+        <version>${mavenVersion}</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-maeedder</artifactId>
+        <version>${mavenVersion}</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-model</artifactId>
+        <version>${mavenVersion}</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-model-builder</artifactId>
+        <version>${mavenVersion}</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-plugin-api</artifactId>
+        <version>${mavenVersion}</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-repository</artifactId>
+        <version>${mavenVersion}</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-settings</artifactId>
+        <version>${mavenVersion}</version>
+        <scope>provided</scope>
+      </dependency>
+      
+      <!-- NOTE: These MUST be provided by mae infrastructure! -->
+      <dependency>
+        <groupId>log4j</groupId>
+        <artifactId>log4j</artifactId>
+        <version>1.2.12</version>
+        <scope>provided</scope>
+      </dependency>
+      <!-- /END infra requirements -->
+
+      <dependency>
+        <groupId>com.google.code.gson</groupId>
+        <artifactId>gson</artifactId>
+        <version>1.4</version>
+      </dependency>
+      <dependency>
+        <groupId>junit</groupId>
+        <artifactId>junit</artifactId>
+        <version>4.5</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>commons-io</groupId>
+        <artifactId>commons-io</artifactId>
+        <version>2.0</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+</project>

Propchange: maven/sandbox/trunk/mae/boms/mae-library-bom/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/boms/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/boms/pom.xml?rev=1104405&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/boms/pom.xml (added)
+++ maven/sandbox/trunk/mae/boms/pom.xml Tue May 17 16:57:50 2011
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2010 Red Hat, Inc.
+  
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>mae</artifactId>
+    <groupId>org.apache.maven.mae</groupId>
+    <version>0.6-SNAPSHOT</version>
+  </parent>
+  
+  <artifactId>mae-boms</artifactId>
+  <packaging>pom</packaging>
+  
+  <name>Maven App Engine: Bill-of-Materials POMs</name>
+  
+  <modules>
+    <module>mae-app-bom</module>
+    <module>mae-library-bom</module>
+  </modules>
+  
+</project>

Propchange: maven/sandbox/trunk/mae/boms/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-api/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/pom.xml?rev=1104405&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/pom.xml (added)
+++ maven/sandbox/trunk/mae/mae-api/pom.xml Tue May 17 16:57:50 2011
@@ -0,0 +1,96 @@
+<?xml version='1.0'?>
+<!--
+  Copyright 2010 Red Hat, Inc.
+  
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+  	<artifactId>mae</artifactId>
+  	<groupId>org.apache.maven.mae</groupId>
+    <version>0.6-SNAPSHOT</version>
+  </parent>
+  
+  <artifactId>mae-api</artifactId>
+  <name>Maven App Engine: API</name>
+  
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven</artifactId>
+        <version>${mavenVersion}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven.mae</groupId>
+        <artifactId>mae-library-bom</artifactId>
+        <version>${project.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+  
+  <build>
+  	<plugins>
+  		<plugin>
+  			<groupId>org.codehaus.plexus</groupId>
+  			<artifactId>plexus-component-metadata</artifactId>
+  		</plugin>
+  	</plugins>
+  </build>
+  <dependencies>
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-interactivity-api</artifactId>
+      <version>1.0-alpha-6</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-component-api</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+        <groupId>jline</groupId>
+        <artifactId>jline</artifactId>
+        <version>0.9.94</version>
+    </dependency>
+    <dependency>
+        <groupId>org.codehaus.plexus</groupId>
+        <artifactId>plexus-component-annotations</artifactId>
+    </dependency>
+    <dependency>
+    	<groupId>javax.inject</groupId>
+    	<artifactId>javax.inject</artifactId>
+    	<version>1</version>
+    	<scope>provided</scope>
+    </dependency>
+  </dependencies>
+  
+</project>

Propchange: maven/sandbox/trunk/mae/mae-api/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/DefaultMAEExecutionRequest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/DefaultMAEExecutionRequest.java?rev=1104405&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/DefaultMAEExecutionRequest.java (added)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/DefaultMAEExecutionRequest.java Tue May 17 16:57:50 2011
@@ -0,0 +1,647 @@
+/*
+ * Copyright 2010 Red Hat, Inc.
+ * 
+ * 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.
+ */
+
+package org.apache.maven.mae;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.ExecutionListener;
+import org.apache.maven.execution.MavenExecutionRequest;
+import org.apache.maven.model.Profile;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.settings.Mirror;
+import org.apache.maven.settings.Proxy;
+import org.apache.maven.settings.Server;
+import org.apache.maven.settings.Settings;
+
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+import java.util.Properties;
+
+public class DefaultMAEExecutionRequest
+    implements MAEExecutionRequest
+{
+
+    private Settings settings;
+
+    private String password;
+
+    private final DefaultMavenExecutionRequest embedded = new DefaultMavenExecutionRequest();
+
+    public DefaultMAEExecutionRequest copyOf()
+    {
+        return new DefaultMAEExecutionRequest().setPasswordToEncrypt( getPasswordToEncyrpt() )
+                                               .setSettings( getSettings() )
+                                               .setBaseDirectory( new File( getBaseDirectory() ) )
+                                               .setStartTime( getStartTime() )
+                                               .setGoals( getGoals() )
+                                               .setSystemProperties( getSystemProperties() )
+                                               .setUserProperties( getUserProperties() )
+                                               .setReactorFailureBehavior( getReactorFailureBehavior() )
+                                               .setSelectedProjects( getSelectedProjects() )
+                                               .setResumeFrom( getResumeFrom() )
+                                               .setMakeBehavior( getMakeBehavior() )
+                                               .setThreadCount( getThreadCount() )
+                                               .setPerCoreThreadCount( isPerCoreThreadCount() )
+                                               .setRecursive( isRecursive() )
+                                               .setPom( getPom() )
+                                               .setShowErrors( isShowErrors() )
+                                               .setLoggingLevel( getLoggingLevel() )
+                                               .setUpdateSnapshots( isUpdateSnapshots() )
+                                               .setNoSnapshotUpdates( isNoSnapshotUpdates() )
+                                               .setGlobalChecksumPolicy( getGlobalChecksumPolicy() )
+                                               .setLocalRepositoryPath( getLocalRepositoryPath() )
+                                               .setLocalRepositoryPath( getLocalRepositoryPath() )
+                                               .setLocalRepository( getLocalRepository() )
+                                               .setInteractiveMode( isInteractiveMode() )
+                                               .setOffline( isOffline() )
+                                               .setProfiles( getProfiles() )
+                                               .setActiveProfiles( getActiveProfiles() )
+                                               .setInactiveProfiles( getInactiveProfiles() )
+                                               .setProxies( getProxies() )
+                                               .setServers( getServers() )
+                                               .setMirrors( getMirrors() )
+                                               .setPluginGroups( getPluginGroups() )
+                                               .setProjectPresent( isProjectPresent() )
+                                               .setUserSettingsFile( getUserSettingsFile() )
+                                               .setGlobalSettingsFile( getGlobalSettingsFile() )
+                                               .setRemoteRepositories( getRemoteRepositories() )
+                                               .setPluginArtifactRepositories( getPluginArtifactRepositories() )
+                                               .setUserToolchainsFile( getUserToolchainsFile() )
+                                               .setExecutionListener( getExecutionListener() );
+    }
+
+    public MavenExecutionRequest asMavenExecutionRequest()
+    {
+        return embedded;
+    }
+
+    public DefaultMAEExecutionRequest setPasswordToEncrypt( final String password )
+    {
+        this.password = password;
+        return this;
+    }
+
+    public String getPasswordToEncyrpt()
+    {
+        return password;
+    }
+
+    public DefaultMAEExecutionRequest setSettings( final Settings settings )
+    {
+        this.settings = settings;
+        return this;
+    }
+
+    public Settings getSettings()
+    {
+        return settings;
+    }
+
+    public DefaultMAEExecutionRequest addActiveProfile( final String profile )
+    {
+        embedded.addActiveProfile( profile );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest addActiveProfiles( final List<String> profiles )
+    {
+        embedded.addActiveProfiles( profiles );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest addInactiveProfile( final String profile )
+    {
+        embedded.addInactiveProfile( profile );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest addInactiveProfiles( final List<String> profiles )
+    {
+        embedded.addInactiveProfiles( profiles );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest addMirror( final Mirror mirror )
+    {
+        embedded.addMirror( mirror );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest addPluginArtifactRepository( final ArtifactRepository repository )
+    {
+        embedded.addPluginArtifactRepository( repository );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest addPluginGroup( final String pluginGroup )
+    {
+        embedded.addPluginGroup( pluginGroup );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest addPluginGroups( final List<String> pluginGroups )
+    {
+        embedded.addPluginGroups( pluginGroups );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest addProfile( final Profile profile )
+    {
+        embedded.addProfile( profile );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest addProxy( final Proxy proxy )
+    {
+        embedded.addProxy( proxy );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest addRemoteRepository( final ArtifactRepository repository )
+    {
+        embedded.addRemoteRepository( repository );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest addServer( final Server server )
+    {
+        embedded.addServer( server );
+        return this;
+    }
+
+    public List<String> getActiveProfiles()
+    {
+        return embedded.getActiveProfiles();
+    }
+
+    public String getBaseDirectory()
+    {
+        return embedded.getBaseDirectory();
+    }
+
+    public ExecutionListener getExecutionListener()
+    {
+        return embedded.getExecutionListener();
+    }
+
+    public String getGlobalChecksumPolicy()
+    {
+        return embedded.getGlobalChecksumPolicy();
+    }
+
+    public File getGlobalSettingsFile()
+    {
+        return embedded.getGlobalSettingsFile();
+    }
+
+    public List<String> getGoals()
+    {
+        return embedded.getGoals();
+    }
+
+    public List<String> getInactiveProfiles()
+    {
+        return embedded.getInactiveProfiles();
+    }
+
+    public ArtifactRepository getLocalRepository()
+    {
+        return embedded.getLocalRepository();
+    }
+
+    public File getLocalRepositoryPath()
+    {
+        return embedded.getLocalRepositoryPath();
+    }
+
+    public int getLoggingLevel()
+    {
+        return embedded.getLoggingLevel();
+    }
+
+    public String getMakeBehavior()
+    {
+        return embedded.getMakeBehavior();
+    }
+
+    public List<Mirror> getMirrors()
+    {
+        return embedded.getMirrors();
+    }
+
+    public List<ArtifactRepository> getPluginArtifactRepositories()
+    {
+        return embedded.getPluginArtifactRepositories();
+    }
+
+    public List<String> getPluginGroups()
+    {
+        return embedded.getPluginGroups();
+    }
+
+    public File getPom()
+    {
+        return embedded.getPom();
+    }
+
+    public List<Profile> getProfiles()
+    {
+        return embedded.getProfiles();
+    }
+
+    public ProjectBuildingRequest getProjectBuildingRequest()
+    {
+        return embedded.getProjectBuildingRequest();
+    }
+
+    public List<Proxy> getProxies()
+    {
+        return embedded.getProxies();
+    }
+
+    public String getReactorFailureBehavior()
+    {
+        return embedded.getReactorFailureBehavior();
+    }
+
+    public List<ArtifactRepository> getRemoteRepositories()
+    {
+        return embedded.getRemoteRepositories();
+    }
+
+    public String getResumeFrom()
+    {
+        return embedded.getResumeFrom();
+    }
+
+    public List<String> getSelectedProjects()
+    {
+        return embedded.getSelectedProjects();
+    }
+
+    public List<Server> getServers()
+    {
+        return embedded.getServers();
+    }
+
+    public Date getStartTime()
+    {
+        return embedded.getStartTime();
+    }
+
+    public Properties getSystemProperties()
+    {
+        return embedded.getSystemProperties();
+    }
+
+    public String getThreadCount()
+    {
+        return embedded.getThreadCount();
+    }
+
+    public Properties getUserProperties()
+    {
+        return embedded.getUserProperties();
+    }
+
+    public File getUserSettingsFile()
+    {
+        return embedded.getUserSettingsFile();
+    }
+
+    public File getUserToolchainsFile()
+    {
+        return embedded.getUserToolchainsFile();
+    }
+
+    public boolean isInteractiveMode()
+    {
+        return embedded.isInteractiveMode();
+    }
+
+    public boolean isNoSnapshotUpdates()
+    {
+        return embedded.isNoSnapshotUpdates();
+    }
+
+    public boolean isOffline()
+    {
+        return embedded.isOffline();
+    }
+
+    public boolean isPerCoreThreadCount()
+    {
+        return embedded.isPerCoreThreadCount();
+    }
+
+    public boolean isProjectPresent()
+    {
+        return embedded.isProjectPresent();
+    }
+
+    public boolean isRecursive()
+    {
+        return embedded.isRecursive();
+    }
+
+    public boolean isShowErrors()
+    {
+        return embedded.isShowErrors();
+    }
+
+    public boolean isThreadConfigurationPresent()
+    {
+        return embedded.isThreadConfigurationPresent();
+    }
+
+    public boolean isUpdateSnapshots()
+    {
+        return embedded.isUpdateSnapshots();
+    }
+
+    public DefaultMAEExecutionRequest setActiveProfiles( final List<String> activeProfiles )
+    {
+        embedded.setActiveProfiles( activeProfiles );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setBaseDirectory( final File basedir )
+    {
+        embedded.setBaseDirectory( basedir );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setExecutionListener( final ExecutionListener executionListener )
+    {
+        embedded.setExecutionListener( executionListener );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setGlobalChecksumPolicy( final String globalChecksumPolicy )
+    {
+        embedded.setGlobalChecksumPolicy( globalChecksumPolicy );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setGlobalSettingsFile( final File globalSettingsFile )
+    {
+        embedded.setGlobalSettingsFile( globalSettingsFile );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setGoals( final List<String> goals )
+    {
+        embedded.setGoals( goals );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setInactiveProfiles( final List<String> inactiveProfiles )
+    {
+        embedded.setInactiveProfiles( inactiveProfiles );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setInteractiveMode( final boolean interactive )
+    {
+        embedded.setInteractiveMode( interactive );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setLocalRepository( final ArtifactRepository localRepository )
+    {
+        embedded.setLocalRepository( localRepository );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setLocalRepositoryPath( final File localRepository )
+    {
+        embedded.setLocalRepositoryPath( localRepository );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setLocalRepositoryPath( final String localRepository )
+    {
+        embedded.setLocalRepositoryPath( localRepository );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setLoggingLevel( final int loggingLevel )
+    {
+        embedded.setLoggingLevel( loggingLevel );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setMakeBehavior( final String makeBehavior )
+    {
+        embedded.setMakeBehavior( makeBehavior );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setMirrors( final List<Mirror> mirrors )
+    {
+        embedded.setMirrors( mirrors );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setNoSnapshotUpdates( final boolean noSnapshotUpdates )
+    {
+        embedded.setNoSnapshotUpdates( noSnapshotUpdates );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setOffline( final boolean offline )
+    {
+        embedded.setOffline( offline );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setPerCoreThreadCount( final boolean perCoreThreadCount )
+    {
+        embedded.setPerCoreThreadCount( perCoreThreadCount );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setPluginArtifactRepositories( final List<ArtifactRepository> pluginArtifactRepositories )
+    {
+        embedded.setPluginArtifactRepositories( pluginArtifactRepositories );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setPluginGroups( final List<String> pluginGroups )
+    {
+        embedded.setPluginGroups( pluginGroups );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setPom( final File pom )
+    {
+        embedded.setPom( pom );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setProfiles( final List<Profile> profiles )
+    {
+        embedded.setProfiles( profiles );
+        return this;
+    }
+
+    public void setProjectBuildingConfiguration( final ProjectBuildingRequest projectBuildingConfiguration )
+    {
+        embedded.setProjectBuildingConfiguration( projectBuildingConfiguration );
+    }
+
+    public DefaultMAEExecutionRequest setProjectPresent( final boolean projectPresent )
+    {
+        embedded.setProjectPresent( projectPresent );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setProxies( final List<Proxy> proxies )
+    {
+        embedded.setProxies( proxies );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setReactorFailureBehavior( final String failureBehavior )
+    {
+        embedded.setReactorFailureBehavior( failureBehavior );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setRecursive( final boolean recursive )
+    {
+        embedded.setRecursive( recursive );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setRemoteRepositories( final List<ArtifactRepository> remoteRepositories )
+    {
+        embedded.setRemoteRepositories( remoteRepositories );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setResumeFrom( final String project )
+    {
+        embedded.setResumeFrom( project );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setSelectedProjects( final List<String> selectedProjects )
+    {
+        embedded.setSelectedProjects( selectedProjects );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setServers( final List<Server> servers )
+    {
+        embedded.setServers( servers );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setShowErrors( final boolean showErrors )
+    {
+        embedded.setShowErrors( showErrors );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setStartTime( final Date startTime )
+    {
+        embedded.setStartTime( startTime );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setSystemProperties( final Properties properties )
+    {
+        embedded.setSystemProperties( properties );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setThreadCount( final String threadCount )
+    {
+        embedded.setThreadCount( threadCount );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setUpdateSnapshots( final boolean updateSnapshots )
+    {
+        embedded.setUpdateSnapshots( updateSnapshots );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setUseReactor( final boolean reactorActive )
+    {
+        embedded.setUseReactor( reactorActive );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setUserProperties( final Properties userProperties )
+    {
+        embedded.setUserProperties( userProperties );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setUserSettingsFile( final File userSettingsFile )
+    {
+        embedded.setUserSettingsFile( userSettingsFile );
+        return this;
+    }
+
+    public DefaultMAEExecutionRequest setUserToolchainsFile( final File userToolchainsFile )
+    {
+        embedded.setUserToolchainsFile( userToolchainsFile );
+        return this;
+    }
+
+    public boolean useReactor()
+    {
+        return embedded.useReactor();
+    }
+
+    @Override
+    public MAEExecutionRequest withPluginGoal( final PluginGoal goal )
+    {
+        embedded.getGoals().add( goal.formatCliGoal() );
+        return this;
+    }
+
+    @Override
+    public MAEExecutionRequest withPluginGoals( final PluginGoal... goals )
+    {
+        for ( final PluginGoal goal : goals )
+        {
+            embedded.getGoals().add( goal.formatCliGoal() );
+        }
+
+        return this;
+    }
+
+    @Override
+    public MAEExecutionRequest setSystemProperty( final String key, final String value )
+    {
+        embedded.getSystemProperties().setProperty( key, value );
+        return this;
+    }
+
+    @Override
+    public MAEExecutionRequest setUserProperty( final String key, final String value )
+    {
+        embedded.getUserProperties().setProperty( key, value );
+        return this;
+    }
+
+}

Propchange: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/DefaultMAEExecutionRequest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEAdvisor.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEAdvisor.java?rev=1104405&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEAdvisor.java (added)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEAdvisor.java Tue May 17 16:57:50 2011
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2010 Red Hat, Inc.
+ * 
+ * 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.
+ */
+
+package org.apache.maven.mae;
+
+import org.apache.maven.mae.conf.MAELibrary;
+import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.component.annotations.Requirement;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Component( role = MAEAdvisor.class )
+public class MAEAdvisor
+{
+
+    private final Map<String, Object> advice = new HashMap<String, Object>();
+
+    @Requirement( hint = "core" )
+    private final MAELibrary library;
+
+    @Inject
+    public MAEAdvisor( @Named( "core" ) final MAELibrary library )
+    {
+        this.library = library;
+    }
+
+    public MAEAdvisor advise( final String key, final Object value, final boolean override )
+    {
+        if ( override || !advice.containsKey( key ) )
+        {
+            library.getLogger().debug( "NEW ADVICE: " + key + " = " + value );
+            advice.put( key, value );
+        }
+
+        return this;
+    }
+
+    public Object getRawAdvice( final String key )
+    {
+        return advice.get( key );
+    }
+
+    public <T> T getAdvice( final String key, final Class<T> adviceType )
+        throws MAEException
+    {
+        try
+        {
+            return adviceType.cast( advice.get( key ) );
+        }
+        catch ( final ClassCastException e )
+        {
+            throw new MAEException( "Invalid type for advice: %s.\nExpected type: %s\nActual type: %s", e, key,
+                                    adviceType.getName(), advice.get( key ).getClass().getName() );
+        }
+    }
+
+}

Propchange: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEAdvisor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEException.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEException.java?rev=1104405&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEException.java (added)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEException.java Tue May 17 16:57:50 2011
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2010 Red Hat, Inc.
+ * 
+ * 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.
+ */
+
+package org.apache.maven.mae;
+
+import java.text.MessageFormat;
+
+public class MAEException
+    extends Exception
+{
+
+    private static final long serialVersionUID = 1L;
+
+    private final Object[] params;
+
+    private String formattedMessage;
+
+    public MAEException( final String message, final Throwable cause )
+    {
+        super( message, cause );
+        params = null;
+    }
+
+    public MAEException( final String message )
+    {
+        super( message );
+        params = null;
+    }
+
+    public MAEException( final String message, final Throwable cause, final Object... params )
+    {
+        super( message, cause );
+        this.params = params;
+    }
+
+    public MAEException( final String message, final Object... params )
+    {
+        super( message );
+        this.params = params;
+    }
+
+    @Override
+    public synchronized String getMessage()
+    {
+        if ( formattedMessage == null )
+        {
+            final String format = super.getMessage();
+            if ( params == null || params.length < 1 )
+            {
+                formattedMessage = format;
+            }
+            else
+            {
+                final String original = formattedMessage;
+                try
+                {
+                    formattedMessage = String.format( format, params );
+                }
+                catch ( final Error e )
+                {
+                }
+                catch ( final RuntimeException e )
+                {
+                }
+                catch ( final Exception e )
+                {
+                }
+
+                if ( formattedMessage == null || original == formattedMessage )
+                {
+                    try
+                    {
+                        formattedMessage = MessageFormat.format( format, params );
+                    }
+                    catch ( final Error e )
+                    {
+                        formattedMessage = format;
+                        throw e;
+                    }
+                    catch ( final RuntimeException e )
+                    {
+                        formattedMessage = format;
+                        throw e;
+                    }
+                    catch ( final Exception e )
+                    {
+                        formattedMessage = format;
+                    }
+                }
+            }
+        }
+
+        return formattedMessage;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @see java.lang.Throwable#getLocalizedMessage()
+     */
+    @Override
+    public String getLocalizedMessage()
+    {
+        return getMessage();
+    }
+
+}

Propchange: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEExecutionRequest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEExecutionRequest.java?rev=1104405&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEExecutionRequest.java (added)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEExecutionRequest.java Tue May 17 16:57:50 2011
@@ -0,0 +1,290 @@
+/*
+ * Copyright 2010 Red Hat, Inc.
+ * 
+ * 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.
+ */
+
+package org.apache.maven.mae;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.execution.ExecutionListener;
+import org.apache.maven.execution.MavenExecutionRequest;
+import org.apache.maven.model.Profile;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.settings.Mirror;
+import org.apache.maven.settings.Proxy;
+import org.apache.maven.settings.Server;
+import org.apache.maven.settings.Settings;
+
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+import java.util.Properties;
+
+public interface MAEExecutionRequest
+{
+
+    MAEExecutionRequest copyOf();
+
+    MavenExecutionRequest asMavenExecutionRequest();
+
+    MAEExecutionRequest setPasswordToEncrypt( final String password );
+
+    String getPasswordToEncyrpt();
+
+    MAEExecutionRequest setSettings( final Settings settings );
+
+    Settings getSettings();
+
+    // NOTE: Methods below are adapted from MavenExecutionRequest
+
+    // Base directory
+    MAEExecutionRequest setBaseDirectory( File basedir );
+
+    String getBaseDirectory();
+
+    // Timing (remove this)
+    MAEExecutionRequest setStartTime( Date start );
+
+    Date getStartTime();
+
+    // Goals
+    MAEExecutionRequest withPluginGoals( PluginGoal... goal );
+
+    MAEExecutionRequest withPluginGoal( PluginGoal goal );
+
+    MAEExecutionRequest setGoals( List<String> goals );
+
+    List<String> getGoals();
+
+    // Properties
+
+    /**
+     * Sets the system properties to use for interpolation and profile activation. The system properties are collected
+     * from the runtime environment like {@link System#getProperties()} and environment variables.
+     * 
+     * @param systemProperties
+     *            The system properties, may be {@code null}.
+     * @return This request, never {@code null}.
+     */
+    MAEExecutionRequest setSystemProperties( Properties systemProperties );
+
+    MAEExecutionRequest setSystemProperty( String key, String value );
+
+    /**
+     * Gets the system properties to use for interpolation and profile activation. The system properties are collected
+     * from the runtime environment like {@link System#getProperties()} and environment variables.
+     * 
+     * @return The system properties, never {@code null}.
+     */
+    Properties getSystemProperties();
+
+    /**
+     * Sets the user properties to use for interpolation and profile activation. The user properties have been
+     * configured directly by the user on his discretion, e.g. via the {@code -Dkey=value} parameter on the command
+     * line.
+     * 
+     * @param userProperties
+     *            The user properties, may be {@code null}.
+     * @return This request, never {@code null}.
+     */
+    MAEExecutionRequest setUserProperties( Properties userProperties );
+
+    MAEExecutionRequest setUserProperty( String key, String value );
+
+    /**
+     * Gets the user properties to use for interpolation and profile activation. The user properties have been
+     * configured directly by the user on his discretion, e.g. via the {@code -Dkey=value} parameter on the command
+     * line.
+     * 
+     * @return The user properties, never {@code null}.
+     */
+    Properties getUserProperties();
+
+    // Reactor
+    MAEExecutionRequest setReactorFailureBehavior( String failureBehavior );
+
+    String getReactorFailureBehavior();
+
+    MAEExecutionRequest setSelectedProjects( List<String> projects );
+
+    List<String> getSelectedProjects();
+
+    MAEExecutionRequest setResumeFrom( String project );
+
+    String getResumeFrom();
+
+    MAEExecutionRequest setMakeBehavior( String makeBehavior );
+
+    String getMakeBehavior();
+
+    MAEExecutionRequest setThreadCount( String threadCount );
+
+    String getThreadCount();
+
+    boolean isThreadConfigurationPresent();
+
+    MAEExecutionRequest setPerCoreThreadCount( boolean perCoreThreadCount );
+
+    boolean isPerCoreThreadCount();
+
+    // Recursive (really to just process the top-level POM)
+    MAEExecutionRequest setRecursive( boolean recursive );
+
+    boolean isRecursive();
+
+    MAEExecutionRequest setPom( File pom );
+
+    File getPom();
+
+    // Errors
+    MAEExecutionRequest setShowErrors( boolean showErrors );
+
+    boolean isShowErrors();
+
+    // Logging
+    MAEExecutionRequest setLoggingLevel( int loggingLevel );
+
+    int getLoggingLevel();
+
+    // Update snapshots
+    MAEExecutionRequest setUpdateSnapshots( boolean updateSnapshots );
+
+    boolean isUpdateSnapshots();
+
+    MAEExecutionRequest setNoSnapshotUpdates( boolean noSnapshotUpdates );
+
+    boolean isNoSnapshotUpdates();
+
+    // Checksum policy
+    MAEExecutionRequest setGlobalChecksumPolicy( String globalChecksumPolicy );
+
+    String getGlobalChecksumPolicy();
+
+    // Local repository
+    MAEExecutionRequest setLocalRepositoryPath( String localRepository );
+
+    MAEExecutionRequest setLocalRepositoryPath( File localRepository );
+
+    File getLocalRepositoryPath();
+
+    MAEExecutionRequest setLocalRepository( ArtifactRepository repository );
+
+    ArtifactRepository getLocalRepository();
+
+    // Interactive
+    MAEExecutionRequest setInteractiveMode( boolean interactive );
+
+    boolean isInteractiveMode();
+
+    // Offline
+    MAEExecutionRequest setOffline( boolean offline );
+
+    boolean isOffline();
+
+    // Profiles
+    List<Profile> getProfiles();
+
+    MAEExecutionRequest addProfile( Profile profile );
+
+    MAEExecutionRequest setProfiles( List<Profile> profiles );
+
+    MAEExecutionRequest addActiveProfile( String profile );
+
+    MAEExecutionRequest addActiveProfiles( List<String> profiles );
+
+    MAEExecutionRequest setActiveProfiles( List<String> profiles );
+
+    List<String> getActiveProfiles();
+
+    MAEExecutionRequest addInactiveProfile( String profile );
+
+    MAEExecutionRequest addInactiveProfiles( List<String> profiles );
+
+    MAEExecutionRequest setInactiveProfiles( List<String> profiles );
+
+    List<String> getInactiveProfiles();
+
+    // Proxies
+    List<Proxy> getProxies();
+
+    MAEExecutionRequest setProxies( List<Proxy> proxies );
+
+    MAEExecutionRequest addProxy( Proxy proxy );
+
+    // Servers
+    List<Server> getServers();
+
+    MAEExecutionRequest setServers( List<Server> servers );
+
+    MAEExecutionRequest addServer( Server server );
+
+    // Mirrors
+    List<Mirror> getMirrors();
+
+    MAEExecutionRequest setMirrors( List<Mirror> mirrors );
+
+    MAEExecutionRequest addMirror( Mirror mirror );
+
+    // Plugin groups
+    List<String> getPluginGroups();
+
+    MAEExecutionRequest setPluginGroups( List<String> pluginGroups );
+
+    MAEExecutionRequest addPluginGroup( String pluginGroup );
+
+    MAEExecutionRequest addPluginGroups( List<String> pluginGroups );
+
+    boolean isProjectPresent();
+
+    MAEExecutionRequest setProjectPresent( boolean isProjectPresent );
+
+    File getUserSettingsFile();
+
+    MAEExecutionRequest setUserSettingsFile( File userSettingsFile );
+
+    File getGlobalSettingsFile();
+
+    MAEExecutionRequest setGlobalSettingsFile( File globalSettingsFile );
+
+    MAEExecutionRequest addRemoteRepository( ArtifactRepository repository );
+
+    MAEExecutionRequest addPluginArtifactRepository( ArtifactRepository repository );
+
+    /**
+     * Set a new list of remote repositories to use the execution request. This is necessary if you perform
+     * transformations on the remote repositories being used. For example if you replace existing repositories with
+     * mirrors then it's easier to just replace the whole list with a new list of transformed repositories.
+     * 
+     * @param repositories
+     * @return
+     */
+    MAEExecutionRequest setRemoteRepositories( List<ArtifactRepository> repositories );
+
+    List<ArtifactRepository> getRemoteRepositories();
+
+    MAEExecutionRequest setPluginArtifactRepositories( List<ArtifactRepository> repositories );
+
+    List<ArtifactRepository> getPluginArtifactRepositories();
+
+    File getUserToolchainsFile();
+
+    MAEExecutionRequest setUserToolchainsFile( File userToolchainsFile );
+
+    ExecutionListener getExecutionListener();
+
+    MAEExecutionRequest setExecutionListener( ExecutionListener executionListener );
+
+    ProjectBuildingRequest getProjectBuildingRequest();
+
+}

Propchange: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/MAEExecutionRequest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/PluginGoal.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/PluginGoal.java?rev=1104405&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/PluginGoal.java (added)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/PluginGoal.java Tue May 17 16:57:50 2011
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2010 Red Hat, Inc.
+ * 
+ * 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.
+ */
+
+package org.apache.maven.mae;
+
+public class PluginGoal
+{
+
+    private final String groupId;
+
+    private final String artifactId;
+
+    private final String version;
+
+    private final String pluginPrefix;
+
+    private final String goal;
+
+    public PluginGoal( final String groupId, final String artifactId, final String version, final String goal )
+    {
+        pluginPrefix = null;
+        this.groupId = groupId;
+        this.artifactId = artifactId;
+        this.version = version;
+        this.goal = goal;
+    }
+
+    public PluginGoal( final String groupId, final String artifactId, final String goal )
+    {
+        pluginPrefix = null;
+        this.groupId = groupId;
+        this.artifactId = artifactId;
+        version = null;
+        this.goal = goal;
+    }
+
+    public PluginGoal( final String pluginPrefix, final String goal )
+    {
+        this.pluginPrefix = pluginPrefix;
+        groupId = null;
+        artifactId = null;
+        version = null;
+        this.goal = goal;
+    }
+
+    public String getGroupId()
+    {
+        return groupId;
+    }
+
+    public String getArtifactId()
+    {
+        return artifactId;
+    }
+
+    public String getVersion()
+    {
+        return version;
+    }
+
+    public String getPluginPrefix()
+    {
+        return pluginPrefix;
+    }
+
+    public String getGoal()
+    {
+        return goal;
+    }
+
+    public String formatCliGoal()
+    {
+        final StringBuilder sb = new StringBuilder();
+        if ( pluginPrefix != null )
+        {
+            sb.append( pluginPrefix );
+        }
+        else
+        {
+            sb.append( groupId ).append( ':' ).append( artifactId );
+            if ( version != null )
+            {
+                sb.append( ':' ).append( version );
+            }
+        }
+        sb.append( ':' ).append( goal );
+
+        return sb.toString();
+    }
+
+    @Override
+    public String toString()
+    {
+        return "Plugin+Goal: " + formatCliGoal();
+    }
+
+}

Propchange: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/PluginGoal.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/AbstractMAELibrary.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/AbstractMAELibrary.java?rev=1104405&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/AbstractMAELibrary.java (added)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/AbstractMAELibrary.java Tue May 17 16:57:50 2011
@@ -0,0 +1,270 @@
+/*
+ * Copyright 2010 Red Hat, Inc.
+ * 
+ * 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.
+ */
+
+package org.apache.maven.mae.conf;
+
+import org.apache.log4j.Logger;
+import org.apache.maven.mae.conf.ext.ExtensionConfiguration;
+import org.apache.maven.mae.conf.ext.ExtensionConfigurationException;
+import org.apache.maven.mae.conf.ext.ExtensionConfigurationLoader;
+import org.apache.maven.mae.internal.container.ComponentKey;
+import org.apache.maven.mae.internal.container.ComponentSelector;
+import org.apache.maven.mae.internal.container.InstanceRegistry;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+public abstract class AbstractMAELibrary
+    implements MAELibrary
+{
+
+    private final String name;
+
+    private final VersionProvider versionProvider;
+
+    private final String logHandle;
+
+    private final Logger logger;
+
+    private final String id;
+
+    private final ExtensionConfigurationLoader configLoader;
+
+    private ExtensionConfiguration config;
+
+    private final ComponentSelector selector;
+
+    private final Set<ComponentKey<?>> exportedComponents = new HashSet<ComponentKey<?>>();
+
+    private final Map<Class<?>, Set<ComponentKey<?>>> managementComponents =
+        new HashMap<Class<?>, Set<ComponentKey<?>>>();
+
+    private final InstanceRegistry instanceRegistry = new InstanceRegistry();
+
+    protected AbstractMAELibrary( final String id, final String name, final VersionProvider versionProvider,
+                                  final ExtensionConfigurationLoader configLoader )
+    {
+        this( id, name, versionProvider, id, configLoader, null );
+    }
+
+    protected AbstractMAELibrary( final String id, final String name, final VersionProvider versionProvider,
+                                  final String logHandle )
+    {
+        this( id, name, versionProvider, logHandle, null, null );
+    }
+
+    protected AbstractMAELibrary( final String id, final String name, final VersionProvider versionProvider )
+    {
+        this( id, name, versionProvider, id, null, null );
+    }
+
+    protected AbstractMAELibrary( final String id, final String name, final VersionProvider versionProvider,
+                                  final String logHandle, final ExtensionConfigurationLoader configLoader )
+    {
+        this( id, name, versionProvider, logHandle, configLoader, null );
+    }
+
+    protected AbstractMAELibrary( final String id, final String name, final VersionProvider versionProvider,
+                                  final ExtensionConfigurationLoader configLoader,
+                                  final ComponentSelector componentSelector )
+    {
+        this( id, name, versionProvider, id, configLoader, componentSelector );
+    }
+
+    protected AbstractMAELibrary( final String id, final String name, final VersionProvider versionProvider,
+                                  final String logHandle, final ComponentSelector componentSelector )
+    {
+        this( id, name, versionProvider, logHandle, null, componentSelector );
+    }
+
+    protected AbstractMAELibrary( final String id, final String name, final VersionProvider versionProvider,
+                                  final ComponentSelector componentSelector )
+    {
+        this( id, name, versionProvider, id, null, componentSelector );
+    }
+
+    protected AbstractMAELibrary( final String id, final String name, final VersionProvider versionProvider,
+                                  final String logHandle, final ExtensionConfigurationLoader configLoader,
+                                  final ComponentSelector componentSelector )
+    {
+        this.id = id;
+        this.name = name;
+        this.versionProvider = versionProvider;
+        this.logHandle = logHandle;
+        this.configLoader = configLoader;
+        selector = componentSelector;
+        logger = Logger.getLogger( logHandle );
+    }
+
+    public ComponentSelector getComponentSelector()
+    {
+        return selector;
+    }
+
+    public Logger getLogger()
+    {
+        return logger;
+    }
+
+    public void loadConfiguration( final MAEConfiguration embConfig )
+        throws ExtensionConfigurationException
+    {
+        if ( configLoader != null )
+        {
+            config = configLoader.loadConfiguration( embConfig );
+        }
+    }
+
+    protected void setConfiguration( final ExtensionConfiguration config )
+    {
+        this.config = config;
+    }
+
+    public ExtensionConfiguration getConfiguration()
+    {
+        return config;
+    }
+
+    public String getLabel()
+    {
+        return name + ": " + versionProvider.getVersion();
+    }
+
+    public String getId()
+    {
+        return id;
+    }
+
+    public String getLogHandle()
+    {
+        return logHandle;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public String getVersion()
+    {
+        return versionProvider.getVersion();
+    }
+
+    protected AbstractMAELibrary withExportedComponent( final ComponentKey<?> key )
+    {
+        exportedComponents.add( key );
+        return this;
+    }
+
+    @Override
+    public Set<ComponentKey<?>> getExportedComponents()
+    {
+        return exportedComponents;
+    }
+
+    public Map<Class<?>, Set<ComponentKey<?>>> getManagementComponents()
+    {
+        return managementComponents;
+    }
+
+    public AbstractMAELibrary withManagementComponent( final ComponentKey<?> key, final Class<?>... managementTypes )
+    {
+        if ( managementTypes != null )
+        {
+            for ( final Class<?> managementType : managementTypes )
+            {
+                Set<ComponentKey<?>> keys = managementComponents.get( managementType );
+                if ( keys == null )
+                {
+                    keys = new HashSet<ComponentKey<?>>();
+                    managementComponents.put( managementType, keys );
+                }
+                keys.add( key );
+            }
+        }
+
+        return this;
+    }
+
+    public Set<ComponentKey<?>> getManagementComponents( final Class<?> managementType )
+    {
+        return managementComponents.get( managementType );
+    }
+
+    public <T> AbstractMAELibrary withComponentInstance( final ComponentKey<T> key, final T instance )
+    {
+        instanceRegistry.add( key, instance );
+        return this;
+    }
+
+    @Override
+    public InstanceRegistry getInstanceRegistry()
+    {
+        return instanceRegistry;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @see java.lang.Object#hashCode()
+     */
+    @Override
+    public int hashCode()
+    {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ( ( id == null ) ? 0 : id.hashCode() );
+        return result;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    @Override
+    public boolean equals( final Object obj )
+    {
+        if ( this == obj )
+        {
+            return true;
+        }
+        if ( obj == null )
+        {
+            return false;
+        }
+        if ( getClass() != obj.getClass() )
+        {
+            return false;
+        }
+        final AbstractMAELibrary other = (AbstractMAELibrary) obj;
+        if ( id == null )
+        {
+            if ( other.id != null )
+            {
+                return false;
+            }
+        }
+        else if ( !id.equals( other.id ) )
+        {
+            return false;
+        }
+        return true;
+    }
+
+}

Propchange: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/AbstractMAELibrary.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/CoreLibrary.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/CoreLibrary.java?rev=1104405&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/CoreLibrary.java (added)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/CoreLibrary.java Tue May 17 16:57:50 2011
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2010 Red Hat, Inc.
+ * 
+ * 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.
+ */
+
+package org.apache.maven.mae.conf;
+
+import org.commonjava.atservice.annotation.Service;
+
+/**
+ * EMB library that injects a custom {@link MirrorSelector} implementation, which uses a custom
+ * configuration loaded by {@link AppIntegrationConfigLoader}.
+ */
+@Service( MAELibrary.class )
+public class CoreLibrary
+    extends AbstractMAELibrary
+{
+    // Requires an empty constructor for ServiceLoader to work!
+    public CoreLibrary()
+    {
+        super( "core", "EMB-Core", new MavenPomVersionProvider( "org.commonjava.emb", "emb-api" ) );
+    }
+}

Propchange: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/CoreLibrary.java
------------------------------------------------------------------------------
    svn:eol-style = native