Author: jvanzyl
Date: Wed Sep 28 15:56:41 2005
New Revision: 292339
URL: http://svn.apache.org/viewcvs?rev=292339&view=rev
Log:
o adding the name to the deploy plugin metadata so that i can pull it down
and display it in an IDE
Added:
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/SummaryPluginDescriptor.java
(with props)
Modified:
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java
maven/components/trunk/maven-embedder/notes.txt
maven/components/trunk/maven-embedder/pom.xml
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
maven/components/trunk/maven-plugins/maven-plugin-plugin/pom.xml
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java
maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/background/history-of-maven.apt
Modified:
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java?rev=292339&r1=292338&r2=292339&view=diff
==============================================================================
---
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java
(original)
+++
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java
Wed Sep 28 15:56:41 2005
@@ -63,7 +63,7 @@
return null;
}
- public void addPluginMapping( String goalPrefix, String artifactId )
+ public void addPluginMapping( String goalPrefix, String artifactId, String
name )
{
List plugins = getMetadata().getPlugins();
boolean found = false;
@@ -80,6 +80,8 @@
Plugin plugin = new Plugin();
plugin.setPrefix( goalPrefix );
plugin.setArtifactId( artifactId );
+ plugin.setName( name );
+
getMetadata().addPlugin( plugin );
}
Modified: maven/components/trunk/maven-embedder/notes.txt
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-embedder/notes.txt?rev=292339&r1=292338&r2=292339&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/notes.txt (original)
+++ maven/components/trunk/maven-embedder/notes.txt Wed Sep 28 15:56:41 2005
@@ -47,3 +47,15 @@
-- having to add all the component descriptors by hand and the maven
version metadata is a real drag. something needs to be added to
the assembly plugin.
+
+-- maven.home
+
+this is a CLI notion and should not be required by the embedder but
+we still need to deal with notions of centralize configuration which
+are extremely important in the corporate environment.
+
+-- ~/.m2
+
+plugin registry and settings should be stored in the tool specific locations
+
+-- local repository will be shared and default to ~/.m2/repository
Modified: maven/components/trunk/maven-embedder/pom.xml
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-embedder/pom.xml?rev=292339&r1=292338&r2=292339&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/pom.xml (original)
+++ maven/components/trunk/maven-embedder/pom.xml Wed Sep 28 15:56:41 2005
@@ -2,27 +2,19 @@
<parent>
<artifactId>maven</artifactId>
<groupId>org.apache.maven</groupId>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>maven-embedder</artifactId>
<name>Maven Embedder</name>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>RELEASE</version>
<configuration>
- <descriptor>src/assemble/bin.xml</descriptor>
- <finalName>maven-2.0-beta-1</finalName>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>RELEASE</version>
- <configuration>
<descriptor>src/main/assembly/dep.xml</descriptor>
</configuration>
</plugin>
@@ -32,7 +24,7 @@
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-settings</artifactId>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
@@ -49,22 +41,22 @@
<dependency>
<groupId>org.apache.maven.reporting</groupId>
<artifactId>maven-reporting-api</artifactId>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-profile</artifactId>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>plexus</groupId>
@@ -78,17 +70,17 @@
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-repository-metadata</artifactId>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-registry</artifactId>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
@@ -98,12 +90,12 @@
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>plexus</groupId>
@@ -117,17 +109,17 @@
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-descriptor</artifactId>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-monitor</artifactId>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact-manager</artifactId>
- <version>2.0-beta-2-SNAPSHOT</version>
+ <version>2.0-beta-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
Modified:
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java?rev=292339&r1=292338&r2=292339&view=diff
==============================================================================
---
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
(original)
+++
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
Wed Sep 28 15:56:41 2005
@@ -36,6 +36,8 @@
import org.apache.maven.lifecycle.LifecycleExecutionException;
import org.apache.maven.lifecycle.LifecycleExecutor;
import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder;
import org.apache.maven.execution.ReactorManager;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.execution.MavenExecutionResponse;
@@ -43,6 +45,7 @@
import org.codehaus.classworlds.ClassWorld;
import org.codehaus.classworlds.DuplicateRealmException;
import org.codehaus.plexus.PlexusContainerException;
+import org.codehaus.plexus.configuration.PlexusConfigurationException;
import
org.codehaus.plexus.component.repository.exception.ComponentLifecycleException;
import
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.embed.Embedder;
@@ -54,6 +57,8 @@
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.InputStream;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
@@ -90,6 +95,8 @@
private ProfileManager profileManager;
+ private PluginDescriptorBuilder pluginDescriptorBuilder;
+
// ----------------------------------------------------------------------
// Configuration
// ----------------------------------------------------------------------
@@ -235,12 +242,20 @@
// Embedder Client Contract
// ----------------------------------------------------------------------
+ // ----------------------------------------------------------------------
+ // Model
+ // ----------------------------------------------------------------------
+
public Model readModel( File model )
throws XmlPullParserException, FileNotFoundException, IOException
{
return modelReader.read( new FileReader( model ) );
}
+ // ----------------------------------------------------------------------
+ // Project
+ // ----------------------------------------------------------------------
+
public MavenProject readProject( File mavenProject )
throws ProjectBuildingException
{
@@ -259,72 +274,78 @@
return mavenProjectBuilder.buildWithDependencies( mavenProject,
localRepository, profileManager );
}
- // ----------------------------------------------------------------------
- // Internal utility code
- // ----------------------------------------------------------------------
-
- private ArtifactRepository createLocalRepository( Settings settings )
- throws ComponentLookupException
+ public List collectProjects( File basedir, String[] includes, String[]
excludes )
+ throws MojoExecutionException
{
- ArtifactRepositoryLayout repositoryLayout = (ArtifactRepositoryLayout)
embedder.lookup( ArtifactRepositoryLayout.ROLE, "default" );
+ List projects = new ArrayList();
- String url = settings.getLocalRepository();
+ List poms = getPomFiles( basedir, includes, excludes );
- if ( !url.startsWith( "file:" ) )
+ for ( Iterator i = poms.iterator(); i.hasNext(); )
{
- url = "file://" + url;
- }
-
- ArtifactRepository localRepository = new DefaultArtifactRepository(
"local", url, repositoryLayout );
+ File pom = (File) i.next();
- boolean snapshotPolicySet = false;
+ try
+ {
+ MavenProject p = readProject( pom );
- if ( offline )
- {
- settings.setOffline( true );
+ projects.add( p );
- snapshotPolicySet = true;
+ }
+ catch ( ProjectBuildingException e )
+ {
+ throw new MojoExecutionException( "Error loading " + pom, e );
+ }
}
- if ( !snapshotPolicySet && updateSnapshots )
- {
- artifactRepositoryFactory.setGlobalUpdatePolicy(
ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );
- }
+ return projects;
+ }
- artifactRepositoryFactory.setGlobalChecksumPolicy(
globalChecksumPolicy );
+ // ----------------------------------------------------------------------
+ // Plugins
+ // ----------------------------------------------------------------------
- return localRepository;
+ public List getAvailablePlugins()
+ {
+ List plugins = new ArrayList();
+
+ plugins.add( makeMockPlugin( "org.apache.maven.plugins",
"maven-jar-plugin", "Maven Jar Plug-in" ) );
+
+ plugins.add( makeMockPlugin( "org.apache.maven.plugins",
"maven-compiler-plugin", "Maven Compiler Plug-in" ) );
+
+ return plugins;
}
- private RuntimeInfo createRuntimeInfo( Settings settings )
+ public PluginDescriptor getPluginDescriptor( SummaryPluginDescriptor
summaryPluginDescriptor )
+ throws MavenEmbedderException
{
- RuntimeInfo runtimeInfo = new RuntimeInfo( settings );
+ PluginDescriptor pluginDescriptor;
- if ( pluginUpdateOverride )
- {
- runtimeInfo.setPluginUpdateOverride( Boolean.TRUE );
- }
- else
+ try
{
- runtimeInfo.setPluginUpdateOverride( Boolean.FALSE );
- }
+ InputStream is = classLoader.getResourceAsStream( "/plugins/" +
summaryPluginDescriptor.getArtifactId() + ".xml" );
- if ( checkLatestPluginVersion )
- {
- runtimeInfo.setCheckLatestPluginVersion( Boolean.TRUE );
+ pluginDescriptor = pluginDescriptorBuilder.build( new
InputStreamReader( is ) );
}
- else
+ catch ( PlexusConfigurationException e )
{
- runtimeInfo.setCheckLatestPluginVersion( Boolean.FALSE );
+ throw new MavenEmbedderException( "Error retrieving plugin
descriptor.", e );
}
- return runtimeInfo;
+ return pluginDescriptor;
+ }
+
+ private SummaryPluginDescriptor makeMockPlugin( String groupId, String
artifactId, String name )
+ {
+ return new SummaryPluginDescriptor( groupId, artifactId, name );
}
// ----------------------------------------------------------------------
// Execution of phases/goals
// ----------------------------------------------------------------------
+ // TODO: should we allow the passing in of a settings object so that
everything can be taken from the client env
+
public void execute( MavenProject project, List goals, EventDispatcher
eventDispatcher, File executionRootDirectory )
throws CycleDetectedException, LifecycleExecutionException,
MojoExecutionException
{
@@ -338,8 +359,6 @@
rm.setFailureBehavior( ReactorManager.FAIL_AT_END );
- //rm.blackList( (MavenProject) projects.get( 0 ) );
-
MavenSession session = new MavenSession( embedder.getContainer(),
settings,
localRepository,
@@ -360,31 +379,66 @@
}
}
- public List collectProjects( File basedir, String[] includes, String[]
excludes )
- throws MojoExecutionException
+ // ----------------------------------------------------------------------
+ // Internal utility code
+ // ----------------------------------------------------------------------
+
+ private ArtifactRepository createLocalRepository( Settings settings )
+ throws ComponentLookupException
{
- List projects = new ArrayList();
+ ArtifactRepositoryLayout repositoryLayout = (ArtifactRepositoryLayout)
embedder.lookup( ArtifactRepositoryLayout.ROLE, "default" );
- List poms = getPomFiles( basedir, includes, excludes );
+ String url = settings.getLocalRepository();
- for ( Iterator i = poms.iterator(); i.hasNext(); )
+ if ( !url.startsWith( "file:" ) )
{
- File pom = (File) i.next();
+ url = "file://" + url;
+ }
- try
- {
- MavenProject p = readProject( pom );
+ ArtifactRepository localRepository = new DefaultArtifactRepository(
"local", url, repositoryLayout );
- projects.add( p );
+ boolean snapshotPolicySet = false;
- }
- catch ( ProjectBuildingException e )
- {
- throw new MojoExecutionException( "Error loading " + pom, e );
- }
+ if ( offline )
+ {
+ settings.setOffline( true );
+
+ snapshotPolicySet = true;
}
- return projects;
+ if ( !snapshotPolicySet && updateSnapshots )
+ {
+ artifactRepositoryFactory.setGlobalUpdatePolicy(
ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );
+ }
+
+ artifactRepositoryFactory.setGlobalChecksumPolicy(
globalChecksumPolicy );
+
+ return localRepository;
+ }
+
+ private RuntimeInfo createRuntimeInfo( Settings settings )
+ {
+ RuntimeInfo runtimeInfo = new RuntimeInfo( settings );
+
+ if ( pluginUpdateOverride )
+ {
+ runtimeInfo.setPluginUpdateOverride( Boolean.TRUE );
+ }
+ else
+ {
+ runtimeInfo.setPluginUpdateOverride( Boolean.FALSE );
+ }
+
+ if ( checkLatestPluginVersion )
+ {
+ runtimeInfo.setCheckLatestPluginVersion( Boolean.TRUE );
+ }
+ else
+ {
+ runtimeInfo.setCheckLatestPluginVersion( Boolean.FALSE );
+ }
+
+ return runtimeInfo;
}
private List getPomFiles( File basedir, String[] includes, String[]
excludes )
@@ -429,7 +483,10 @@
if ( !mavenHome.exists() )
{
- throw new IllegalStateException( "You have set a maven home,
or the default of ~/m2 must exist on your system." );
+ if ( !mavenHome.mkdirs() )
+ {
+ throw new IllegalStateException( "A maven home directory
does not exist and cannot be created." );
+ }
}
System.setProperty( "maven.home", mavenHome.getAbsolutePath() );
@@ -456,6 +513,8 @@
//
----------------------------------------------------------------------
modelReader = new MavenXpp3Reader();
+
+ pluginDescriptorBuilder = new PluginDescriptorBuilder();
profileManager = new DefaultProfileManager(
embedder.getContainer() );
Added:
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/SummaryPluginDescriptor.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/SummaryPluginDescriptor.java?rev=292339&view=auto
==============================================================================
---
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/SummaryPluginDescriptor.java
(added)
+++
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/SummaryPluginDescriptor.java
Wed Sep 28 15:56:41 2005
@@ -0,0 +1,50 @@
+package org.apache.maven.embedder;/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * 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.
+ */
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
+ * @version $Id:$
+ */
+public class SummaryPluginDescriptor
+{
+ private String groupId;
+
+ private String artifactId;
+
+ private String name;
+
+ public SummaryPluginDescriptor( String groupId, String artifactId, String
name )
+ {
+ this.groupId = groupId;
+ this.artifactId = artifactId;
+ this.name = name;
+ }
+
+ public String getGroupId()
+ {
+ return groupId;
+ }
+
+ public String getArtifactId()
+ {
+ return artifactId;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+}
Propchange:
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/SummaryPluginDescriptor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/SummaryPluginDescriptor.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified:
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java?rev=292339&r1=292338&r2=292339&view=diff
==============================================================================
---
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
(original)
+++
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
Wed Sep 28 15:56:41 2005
@@ -6,11 +6,13 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.monitor.event.EventDispatcher;
import org.apache.maven.monitor.event.DefaultEventDispatcher;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.codehaus.plexus.util.FileUtils;
import java.io.File;
import java.util.Set;
import java.util.Collections;
+import java.util.List;
public class MavenEmbedderTest
extends TestCase
@@ -73,6 +75,26 @@
File jar = new File( targetDirectory,
"target/embedder-test-project-1.0-SNAPSHOT.jar" );
assertTrue( jar.exists() );
+ }
+
+ // ----------------------------------------------------------------------
+ // Test mock plugin metadata
+ // ----------------------------------------------------------------------
+
+ public void testMockPluginMetadata()
+ throws Exception
+ {
+ List plugins = maven.getAvailablePlugins();
+
+ SummaryPluginDescriptor spd = (SummaryPluginDescriptor) plugins.get( 0
);
+
+ assertNotNull( spd );
+
+ PluginDescriptor pd = maven.getPluginDescriptor( spd );
+
+ assertNotNull( pd );
+
+ assertEquals( "org.apache.maven.plugins", pd.getGroupId() );
}
// ----------------------------------------------------------------------
Modified: maven/components/trunk/maven-plugins/maven-plugin-plugin/pom.xml
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-plugin-plugin/pom.xml?rev=292339&r1=292338&r2=292339&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-plugin-plugin/pom.xml (original)
+++ maven/components/trunk/maven-plugins/maven-plugin-plugin/pom.xml Wed Sep 28
15:56:41 2005
@@ -24,6 +24,11 @@
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact-manager</artifactId>
+ <version>2.0-beta-3-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
</dependency>
<dependency>
Modified:
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java?rev=292339&r1=292338&r2=292339&view=diff
==============================================================================
---
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java
(original)
+++
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java
Wed Sep 28 15:56:41 2005
@@ -47,7 +47,7 @@
projectArtifact.addMetadata( metadata );
GroupRepositoryMetadata groupMetadata = new GroupRepositoryMetadata(
project.getGroupId() );
- groupMetadata.addPluginMapping( getGoalPrefix(),
project.getArtifactId() );
+ groupMetadata.addPluginMapping( getGoalPrefix(),
project.getArtifactId(), project.getName() );
projectArtifact.addMetadata( groupMetadata );
}
Modified:
maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo?rev=292339&r1=292338&r2=292339&view=diff
==============================================================================
--- maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo
(original)
+++ maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo
Wed Sep 28 15:56:41 2005
@@ -79,7 +79,9 @@
mappedPlugin.setArtifactId( plugin.getArtifactId() );
mappedPlugin.setPrefix( plugin.getPrefix() );
-
+
+ mappedPlugin.setName( plugin.getName() );
+
addPlugin( mappedPlugin );
changed = true;
@@ -262,6 +264,13 @@
<description>Mapping information for a single plugin within this
group</description>
<comment>NOTE: plugin version is _NOT_ included here, since it is
resolved using a separate algorithm.</comment>
<fields>
+ <field>
+ <name>name</name>
+ <type>String</type>
+ <required>true</required>
+ <version>1.0.0</version>
+ <description>Display name for the plugin.</description>
+ </field>
<field>
<name>prefix</name>
<type>String</type>
Modified:
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/background/history-of-maven.apt
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-site/src/site/apt/guides/getting-started/background/history-of-maven.apt?rev=292339&r1=292338&r2=292339&view=diff
==============================================================================
---
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/background/history-of-maven.apt
(original)
+++
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/background/history-of-maven.apt
Wed Sep 28 15:56:41 2005
@@ -6,4 +6,67 @@
12 October 2005
------
-History of Maven
+History of Maven by Jason van Zyl
+
+ Maven began its life in the {{{http://jakarta.apache.org}}Jakarta {{{
http://jakarta.apache.org/alexandria/legacy/}}Alexandria}
+ project. The Alexandria project is now defunct but was the breeding ground
for not only Maven, but for the
+ {{{http://gump.apache.org}}Gump} and {{http://forrest.apache.org}}Forrest}
projects as well. From the old
+
{{{http://cvs.apache.org/viewcvs.cgi/jakarta-alexandria/proposal/maven/?hideattic=0}}CVS}
archive
+ you can see that as of the date of this document Maven was removed from
Alexandria about 3 years, 7 months ago
+ making Maven about 4 years old! Maven spent about 5 months as part of the
Alexandria before moving on to its next home
+ in the {{{http://jakarta.apache.org/turbine}}Turbine} project.
+
+ Though Maven started in Alexandria the testbed for its use was the Turbine
project. Turbine was in the process of
+ decoupling its persistence layer, services layer and web layer into separate
builds and I got very tired of having
+ to maintain several different builds which were essentially the same. There
was no way to easy template Ant builds
+ in those days and every ant build appeared to be different and I found this
incredibly frustrating and futile. I figured
+ who really cares how the build works so long as it works and is easy to use.
The infrastructure of a project is
+ incredibly important but the value of a project lies in the application being
developed. As such the build is
+ generally neglected and tends to fall apart in times of great need like when
you need to prepare a release or when
+ more then a couple people diddle with it. In Jakarta land four years ago it
was rare that a Ant build worked out of
+ the box. Mind you many Turbine developers suffered as I tried to get Maven
working which is something I regret, but
+ I figure how do new projects start and survive if someone doesn's suffer. I
figured it was for their own good
+ and after much gnashing of teeth I think Maven has finally come of age. It
reminds me of one of my favourite quotes
+ from Ralph Johnson and Don Roberts in Patterns for Evolving Frameworks:
+
++-----+
+People develop abstractions by generalizing from concrete examples. Every
attempt to determine the correct abstraction
+on paper without actually developing a running system is doomed to failure. No
one is that smart. A framework is a
+resuable design, so you develop it by looking at the things it is supposed to
be a design of. The more examples
+you look at, the more general your framework will be.
++-----+
+
+ I didn't really know what the final result would look like I just knew there
had to be a better way.
+ But to start with I know I wanted:
+
+ * <<A model for a project>> so you could look in one place for everything
that pertained to the project
+
+ * <<A standard directory structure>> so you didn't have to go fishing around
for libraries, sources and documentation
+
+ So started using a model with a simple XML representation and picked what I
thought were some decent standards for
+ a directory structure and that's how it started. I was still using Ant under
the covers but I had some standard targets
+ that could be used in each of the Turbine builds and that made me happy.
+
+ As noted above one of the projects in Alexandria at the time was Gump. Sam
Ruby tried to convince me that using
+ the Gump model would be a good idea so I took a look. After taking a look the
descriptors I noted that Gump
+ pretty much allowed any project to do whatever it wanted in terms of
directory structure and use of JARs in CVS
+ as Gump was not trying to standardize anything at the time but trying to
continously integrate anything it could
+ get its hands on. My goals were different and I wanted to make an
+
{{{http://www.oreillynet.com/pub/a/network/2005/08/30/ruby-rails-david-heinemeier-hansson.html}}opinionated}
piece
+ of software and I preferred the notion of convention over configuration. I
wanted a project's infrastructure to
+ look the same and work the same so I continued to pursue my own model for a
project and decided to disagree with
+ Gump's particular tact at project modelling which I thought was too flexible.
+
+ The next thing I noticed were all the JARs that we were storing in CVS. We
had many copies of Xerces laying around
+ which is a waste of space but more important was that every time the version
of Xerces changed I had to update the
+ copies of Xerces in each of the projects. This is when I decided to employ
standard Java-like inheritance in the
+ model used and find a way to create a repository for things you need to
build. So I hacked in some inheritance
+ goop and now it was time for the repository.
+
+ ~~ jar jar
+ ~~ ibiblio reasons
+ ~~ maven top-level project
+ ~~ use of jelly
+ ~~ move toward 1.0
+ ~~ development of m2
+ ~~ present day
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]