You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2008/11/21 05:50:51 UTC

svn commit: r719473 - in /maven/components/trunk/maven-mercury: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/maven/ src/main/java/org/apache/maven/mercury/ src/main/resources/ src/main/resources...

Author: sisbell
Date: Thu Nov 20 20:50:50 2008
New Revision: 719473

URL: http://svn.apache.org/viewvc?rev=719473&view=rev
Log:
Import of maven mercury project.

Added:
    maven/components/trunk/maven-mercury/
    maven/components/trunk/maven-mercury/maven-mercury.iml
    maven/components/trunk/maven-mercury/pom.xml   (with props)
    maven/components/trunk/maven-mercury/src/
    maven/components/trunk/maven-mercury/src/main/
    maven/components/trunk/maven-mercury/src/main/java/
    maven/components/trunk/maven-mercury/src/main/java/org/
    maven/components/trunk/maven-mercury/src/main/java/org/apache/
    maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/
    maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/
    maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java   (with props)
    maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java   (with props)
    maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModelFactory.java
    maven/components/trunk/maven-mercury/src/main/resources/
    maven/components/trunk/maven-mercury/src/main/resources/org/
    maven/components/trunk/maven-mercury/src/main/resources/org/apache/
    maven/components/trunk/maven-mercury/src/main/resources/org/apache/maven/
    maven/components/trunk/maven-mercury/src/main/resources/org/apache/maven/project/
    maven/components/trunk/maven-mercury/src/main/resources/org/apache/maven/project/pom-4.0.0.xml

Added: maven/components/trunk/maven-mercury/maven-mercury.iml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-mercury/maven-mercury.iml?rev=719473&view=auto
==============================================================================
--- maven/components/trunk/maven-mercury/maven-mercury.iml (added)
+++ maven/components/trunk/maven-mercury/maven-mercury.iml Thu Nov 20 20:50:50 2008
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module relativePaths="true" MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module" module-name="maven-shared-model" />
+    <orderEntry type="module" module-name="maven-project-builder" />
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/mercury/mercury-external/1.0.0-alpha-2-SNAPSHOT/mercury-external-1.0.0-alpha-2-SNAPSHOT.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/mercury/mercury-artifact/1.0.0-alpha-2-SNAPSHOT/mercury-artifact-1.0.0-alpha-2-SNAPSHOT.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+  </component>
+</module>
+

Added: maven/components/trunk/maven-mercury/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-mercury/pom.xml?rev=719473&view=auto
==============================================================================
--- maven/components/trunk/maven-mercury/pom.xml (added)
+++ maven/components/trunk/maven-mercury/pom.xml Thu Nov 20 20:50:50 2008
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<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">
+  <parent>
+    <artifactId>maven</artifactId>
+    <groupId>org.apache.maven</groupId>
+    <version>3.0-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>maven-mercury</artifactId>
+  <name>Maven Mercury</name>
+  <dependencies>
+  	<dependency>
+  		<groupId>org.apache.maven.mercury</groupId>
+  		<artifactId>mercury-artifact</artifactId>
+  	</dependency>
+  	<dependency>
+  		<groupId>org.apache.maven.mercury</groupId>
+  		<artifactId>mercury-external</artifactId>
+  	</dependency>
+  	<dependency>
+  		<groupId>org.apache.maven</groupId>
+  		<artifactId>maven-project-builder</artifactId>
+  		<version>3.0-SNAPSHOT</version>
+  	</dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.4</version>
+      <scope>test</scope>
+    </dependency>      
+  </dependencies>
+</project>

Propchange: maven/components/trunk/maven-mercury/pom.xml
------------------------------------------------------------------------------
    svn:executable = *

Added: maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java?rev=719473&view=auto
==============================================================================
--- maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java (added)
+++ maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java Thu Nov 20 20:50:50 2008
@@ -0,0 +1,110 @@
+package org.apache.maven.mercury;
+
+import java.io.IOException;
+import java.util.*;
+
+import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
+import org.apache.maven.mercury.builder.api.DependencyProcessor;
+import org.apache.maven.mercury.builder.api.DependencyProcessorException;
+import org.apache.maven.mercury.builder.api.MetadataReader;
+import org.apache.maven.mercury.builder.api.MetadataReaderException;
+import org.apache.maven.project.builder.*;
+import org.apache.maven.shared.model.*;
+
+public final class MavenDependencyProcessor implements DependencyProcessor {
+
+    public MavenDependencyProcessor() {
+
+    }
+
+    public List<ArtifactBasicMetadata> getDependencies(ArtifactBasicMetadata bmd, MetadataReader mdReader, Map system, Map user)
+    throws MetadataReaderException, DependencyProcessorException
+    {
+        if (bmd == null) {
+            throw new IllegalArgumentException("bmd: null");
+        }
+
+        if (mdReader == null) {
+            throw new IllegalArgumentException("mdReader: null");
+        }
+
+        List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
+        interpolatorProperties.add(new InterpolatorProperty("${mavenVersion}", "3.0-SNAPSHOT", PomInterpolatorTag.SYSTEM_PROPERTIES.name()));
+        interpolatorProperties.add(new InterpolatorProperty("${maven.version}", "3.0-SNAPSHOT", PomInterpolatorTag.SYSTEM_PROPERTIES.name()));
+        
+        if(system != null) {
+            interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( system,
+                    PomInterpolatorTag.SYSTEM_PROPERTIES.name()));
+        }
+        if(user != null) {
+            interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( user,
+                    PomInterpolatorTag.USER_PROPERTIES.name()));
+        }
+        
+        List<DomainModel> domainModels = new ArrayList<DomainModel>();
+        try {
+//            MavenDomainModel superPom =
+//                    new MavenDomainModel(MavenDependencyProcessor.class.getResourceAsStream( "pom-4.0.0.xml" ));
+//            domainModels.add(superPom);
+
+            byte [] superBytes = mdReader.readMetadata( bmd );
+            
+            if( superBytes == null || superBytes.length < 1 )
+              throw new DependencyProcessorException("cannot read metadata for " + bmd.getGAV() );
+          
+            MavenDomainModel domainModel = new MavenDomainModel( superBytes );
+            domainModels.add(domainModel);
+
+            Collection<ModelContainer> activeProfiles = domainModel.getActiveProfileContainers(interpolatorProperties);
+
+            for(ModelContainer mc : activeProfiles) {
+                domainModels.add(new MavenDomainModel(transformProfiles(mc.getProperties())));
+            }
+
+
+            domainModels.addAll(getParentsOfDomainModel(domainModel, mdReader));
+        } catch (IOException e) {
+            throw new MetadataReaderException("Failed to create domain model. Message = " + e.getMessage());
+        }
+
+        PomTransformer transformer = new PomTransformer(new MavenDomainModelFactory());
+        ModelTransformerContext ctx = new ModelTransformerContext(
+                Arrays.asList(new ArtifactModelContainerFactory(), new IdModelContainerFactory()));
+
+        try {
+            MavenDomainModel model = ((MavenDomainModel) ctx.transform(domainModels,
+                    transformer,
+                    transformer,
+                    null,
+                    interpolatorProperties,
+                    null));
+            return model.getDependencyMetadata();
+        } catch (IOException e) {
+            throw new MetadataReaderException("Unable to transform model");
+        }
+    }
+
+    private static List<DomainModel> getParentsOfDomainModel(MavenDomainModel domainModel, MetadataReader mdReader)
+            throws IOException, MetadataReaderException {
+        List<DomainModel> domainModels = new ArrayList<DomainModel>();
+        if (domainModel.hasParent()) {
+            MavenDomainModel parentDomainModel = new MavenDomainModel(mdReader.readMetadata(domainModel.getParentMetadata()));
+            domainModels.add(parentDomainModel);
+            domainModels.addAll(getParentsOfDomainModel(parentDomainModel, mdReader));
+        }
+        return domainModels;
+    }
+
+    private static List<ModelProperty> transformProfiles(List<ModelProperty> modelProperties) {
+        List<ModelProperty> properties = new ArrayList<ModelProperty>();
+        for(ModelProperty mp : modelProperties) {
+            if(mp.getUri().startsWith(ProjectUri.Profiles.Profile.xUri)
+                    && !mp.getUri().equals(ProjectUri.Profiles.Profile.id)
+                    && !mp.getUri().startsWith(ProjectUri.Profiles.Profile.Activation.xUri)) {
+                properties.add(new ModelProperty(mp.getUri().replace( ProjectUri.Profiles.Profile.xUri, ProjectUri.xUri ),
+                    mp.getResolvedValue() ));
+            }
+        }
+        return properties;
+    }
+}

Propchange: maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java
------------------------------------------------------------------------------
    svn:executable = *

Added: maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java?rev=719473&view=auto
==============================================================================
--- maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java (added)
+++ maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java Thu Nov 20 20:50:50 2008
@@ -0,0 +1,220 @@
+package org.apache.maven.mercury;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.shared.model.*;
+import org.apache.maven.shared.model.impl.DefaultModelDataSource;
+import org.apache.maven.project.builder.*;
+import org.apache.maven.project.builder.profile.ProfileContext;
+import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ByteArrayInputStream;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+
+/**
+ * Provides a wrapper for the maven model.
+ */
+public final class MavenDomainModel implements DomainModel {
+
+    /**
+     * Bytes containing the underlying model
+     */
+    private final List<ModelProperty> modelProperties;
+
+    /**
+     * History of joins and deletes of model properties
+     */
+    private String eventHistory;
+
+    private ArtifactBasicMetadata parentMetadata;
+
+
+    /**
+     * Constructor
+     *
+     * @throws IOException if there is a problem constructing the model
+     */
+    public MavenDomainModel( byte[] bytes )
+    throws IOException
+    {
+      this( new ByteArrayInputStream(bytes) );
+    }
+
+    /**
+     * Constructor
+     *
+     * @throws IOException if there is a problem constructing the model
+     */
+    public MavenDomainModel(InputStream inputStream)
+            throws IOException {
+        this(ModelMarshaller.marshallXmlToModelProperties(inputStream, ProjectUri.baseUri, PomTransformer.URIS));
+    }
+
+    /**
+     * Constructor
+     *
+     * @throws IOException if there is a problem constructing the model
+     */
+    public MavenDomainModel(List<ModelProperty> modelProperties)
+            throws IOException {
+        if (modelProperties == null) {
+            throw new IllegalArgumentException("modelProperties: null");
+        }
+
+        this.modelProperties = new ArrayList<ModelProperty>(modelProperties);
+    }
+
+    public boolean hasParent() {
+        //TODO: Expensive call if no parent
+        return getParentMetadata() != null;
+    }
+
+    public List<ArtifactBasicMetadata> getDependencyMetadata() throws DataSourceException {
+        List<ArtifactBasicMetadata> metadatas = new ArrayList<ArtifactBasicMetadata>();
+
+        ModelDataSource source = new DefaultModelDataSource();
+        source.init(modelProperties, Arrays.asList(new ArtifactModelContainerFactory(), new IdModelContainerFactory()));
+        for(ModelContainer modelContainer: source.queryFor(ProjectUri.Dependencies.Dependency.xUri)) {
+            metadatas.add(transformContainerToMetadata(modelContainer));
+        }
+
+        return metadatas;
+    }
+
+    public Collection<ModelContainer> getActiveProfileContainers(List<InterpolatorProperty> properties) throws DataSourceException {
+        ModelDataSource dataSource = new DefaultModelDataSource();
+        dataSource.init(modelProperties, Arrays.asList( new ArtifactModelContainerFactory(), new IdModelContainerFactory() ) );
+        return new ProfileContext(dataSource, properties).getActiveProfiles();
+    }
+
+    public ArtifactBasicMetadata getParentMetadata() {
+        if (parentMetadata != null) {
+            return copyArtifactBasicMetadata(parentMetadata);
+        }
+        String groupId = null, artifactId = null, version = null;
+
+        for (ModelProperty mp : modelProperties) {
+            if (mp.getUri().equals(ProjectUri.Parent.version)) {
+                version = mp.getValue();
+            } else if (mp.getUri().equals(ProjectUri.Parent.artifactId)) {
+                artifactId = mp.getValue();
+            } else if (mp.getUri().equals(ProjectUri.Parent.groupId)) {
+                groupId = mp.getValue();
+            }
+            if (groupId != null && artifactId != null && version != null) {
+                break;
+            }
+        }
+
+        if (groupId == null || artifactId == null || version == null) {
+            return null;
+        }
+        parentMetadata = new ArtifactBasicMetadata();
+        parentMetadata.setArtifactId(artifactId);
+        parentMetadata.setVersion(version);
+        parentMetadata.setGroupId(groupId);
+
+        return copyArtifactBasicMetadata(parentMetadata);
+    }
+
+    private ArtifactBasicMetadata copyArtifactBasicMetadata(ArtifactBasicMetadata metadata) {
+        ArtifactBasicMetadata amd = new ArtifactBasicMetadata();
+        amd.setArtifactId(metadata.getArtifactId());
+        amd.setGroupId(metadata.getGroupId());
+        amd.setVersion(metadata.getVersion());
+        return amd;
+    }
+
+    /**
+     * @see org.apache.maven.shared.model.DomainModel#getEventHistory()
+     */
+    public String getEventHistory() {
+        return eventHistory;
+    }
+
+    /**
+     * @see org.apache.maven.shared.model.DomainModel#setEventHistory(String)
+     */
+    public void setEventHistory(String eventHistory) {
+        if (eventHistory == null) {
+            throw new IllegalArgumentException("eventHistory: null");
+        }
+        this.eventHistory = eventHistory;
+    }
+
+    public List<ModelProperty> getModelProperties() {
+        return new ArrayList<ModelProperty>(modelProperties);
+    }
+
+    private ArtifactBasicMetadata transformContainerToMetadata( ModelContainer container  ) throws DataSourceException
+    {
+        List<ModelProperty> modelProperties = container.getProperties();
+
+        ArtifactBasicMetadata metadata = new ArtifactBasicMetadata();
+        for ( ModelProperty mp : modelProperties )
+        {
+            if(mp.getUri().equals(ProjectUri.Dependencies.Dependency.groupId)) {
+                metadata.setGroupId(mp.getValue());
+            } else if(mp.getUri().equals(ProjectUri.Dependencies.Dependency.artifactId)) {
+                metadata.setArtifactId(mp.getValue());
+            }  else if(mp.getUri().equals(ProjectUri.Dependencies.Dependency.version)) {
+                metadata.setVersion(mp.getValue());
+            } else if(mp.getUri().equals(ProjectUri.Dependencies.Dependency.classifier)) {
+                metadata.setClassifier(mp.getValue());
+            } else if(mp.getUri().equals(ProjectUri.Dependencies.Dependency.scope)) {
+                metadata.setScope(mp.getValue());
+            } else if(mp.getUri().equals(ProjectUri.Dependencies.Dependency.type)) {
+                metadata.setType(mp.getValue());
+            } else if(mp.getUri().equals(ProjectUri.Dependencies.Dependency.optional)) {
+                metadata.setOptional(mp.getValue());
+            }
+        }
+
+        if(metadata.getScope() == null) {
+            metadata.setScope("runtime");
+        }
+
+        ModelDataSource dataSource = new DefaultModelDataSource();
+        dataSource.init(container.getProperties(), Arrays.asList(new ArtifactModelContainerFactory(), new ExclusionModelContainerFactory()) );
+        List<ArtifactBasicMetadata> exclusions = new ArrayList<ArtifactBasicMetadata>();
+
+        for(ModelContainer exclusion : dataSource.queryFor(ProjectUri.Dependencies.Dependency.Exclusions.Exclusion.xUri)) {
+            ArtifactBasicMetadata meta = new ArtifactBasicMetadata();
+            exclusions.add(meta);
+
+            for(ModelProperty mp : exclusion.getProperties()) {
+                if(mp.getUri().equals(ProjectUri.Dependencies.Dependency.Exclusions.Exclusion.artifactId)) {
+                    meta.setArtifactId(mp.getValue());
+                } else if(mp.getUri().equals(ProjectUri.Dependencies.Dependency.Exclusions.Exclusion.groupId)) {
+                    meta.setGroupId(mp.getValue());
+                }
+            }
+
+        }
+        metadata.setExclusions(exclusions);
+        
+        return metadata;
+    }
+}

Propchange: maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java
------------------------------------------------------------------------------
    svn:executable = *

Added: maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModelFactory.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModelFactory.java?rev=719473&view=auto
==============================================================================
--- maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModelFactory.java (added)
+++ maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModelFactory.java Thu Nov 20 20:50:50 2008
@@ -0,0 +1,15 @@
+package org.apache.maven.mercury;
+
+import org.apache.maven.shared.model.DomainModelFactory;
+import org.apache.maven.shared.model.DomainModel;
+import org.apache.maven.shared.model.ModelProperty;
+
+import java.util.List;
+import java.io.IOException;
+
+public class MavenDomainModelFactory implements DomainModelFactory {
+    
+    public DomainModel createDomainModel(List<ModelProperty> modelProperties) throws IOException {
+        return new MavenDomainModel(modelProperties);
+    }
+}

Added: maven/components/trunk/maven-mercury/src/main/resources/org/apache/maven/project/pom-4.0.0.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-mercury/src/main/resources/org/apache/maven/project/pom-4.0.0.xml?rev=719473&view=auto
==============================================================================
--- maven/components/trunk/maven-mercury/src/main/resources/org/apache/maven/project/pom-4.0.0.xml (added)
+++ maven/components/trunk/maven-mercury/src/main/resources/org/apache/maven/project/pom-4.0.0.xml Thu Nov 20 20:50:50 2008
@@ -0,0 +1,156 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!-- START SNIPPET: superpom -->
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <name>Maven Default Project</name>
+
+  <repositories>
+    <repository>
+      <id>central</id>
+      <name>Maven Repository Switchboard</name>
+      <layout>default</layout>
+      <url>http://repo1.maven.org/maven2</url>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </repository>
+  </repositories>
+
+  <pluginRepositories>
+    <pluginRepository>
+      <id>central</id>
+      <name>Maven Plugin Repository</name>
+      <url>http://repo1.maven.org/maven2</url>
+      <layout>default</layout>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+      <releases>
+        <updatePolicy>never</updatePolicy>
+      </releases>
+    </pluginRepository>
+  </pluginRepositories>
+
+  <build>
+    <directory>${project.basedir}/target</directory>
+    <outputDirectory>${project.build.directory}/classes</outputDirectory>
+    <finalName>${project.artifactId}-${project.version}</finalName>
+    <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
+    <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
+    <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
+    <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
+    <resources>
+      <resource>
+        <directory>${project.basedir}/src/main/resources</directory>
+      </resource>
+    </resources>
+    <testResources>
+      <testResource>
+        <directory>${project.basedir}/src/test/resources</directory>
+      </testResource>
+    </testResources>
+    <pluginManagement>
+       <plugins>
+         <plugin>
+           <artifactId>maven-antrun-plugin</artifactId>
+           <version>1.1</version>
+         </plugin>       
+         <plugin>
+           <artifactId>maven-assembly-plugin</artifactId>
+           <version>2.2-beta-1</version>
+         </plugin>
+         <plugin>
+           <artifactId>maven-clean-plugin</artifactId>
+           <version>2.2</version>
+         </plugin>
+         <plugin>
+           <artifactId>maven-compiler-plugin</artifactId>
+           <version>2.0.2</version>
+         </plugin>
+         <plugin>
+           <artifactId>maven-dependency-plugin</artifactId>
+           <version>2.0</version>
+         </plugin>
+         <plugin>
+           <artifactId>maven-deploy-plugin</artifactId>
+           <version>2.3</version>
+         </plugin>
+         <plugin>
+           <artifactId>maven-ear-plugin</artifactId>
+           <version>2.3.1</version>
+         </plugin>
+         <plugin>
+           <artifactId>maven-ejb-plugin</artifactId>
+           <version>2.1</version>
+         </plugin>
+         <plugin>
+           <artifactId>maven-install-plugin</artifactId>
+           <version>2.2</version>
+         </plugin>
+         <plugin>
+           <artifactId>maven-jar-plugin</artifactId>
+           <version>2.2</version>
+         </plugin>
+         <plugin>
+           <artifactId>maven-javadoc-plugin</artifactId>
+           <version>2.4</version>
+         </plugin>
+         <plugin>
+           <artifactId>maven-plugin-plugin</artifactId>
+           <version>2.4.2</version>
+         </plugin>
+         <plugin>
+           <artifactId>maven-rar-plugin</artifactId>
+           <version>2.2</version>
+         </plugin>
+         <plugin>                
+           <artifactId>maven-release-plugin</artifactId>
+           <version>2.0-beta-7</version>
+         </plugin>
+         <plugin>                
+           <artifactId>maven-resources-plugin</artifactId>
+           <version>2.2</version>
+         </plugin>
+         <plugin>
+           <artifactId>maven-site-plugin</artifactId>
+           <version>2.0-beta-7</version>
+         </plugin>
+         <plugin>
+           <artifactId>maven-source-plugin</artifactId>
+           <version>2.0.4</version>
+         </plugin>         
+         <plugin>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <version>2.4.3</version>
+         </plugin>
+         <plugin>
+           <artifactId>maven-war-plugin</artifactId>
+           <version>2.1-alpha-1</version>
+         </plugin>
+       </plugins>
+     </pluginManagement>
+  </build>
+
+  <reporting>
+    <outputDirectory>${project.build.directory}/site</outputDirectory>
+  </reporting>
+</project>
+  <!-- END SNIPPET: superpom -->