Author: jdcasey
Date: Thu Aug 10 12:53:38 2006
New Revision: 430505
URL: http://svn.apache.org/viewvc?rev=430505&view=rev
Log:
Adding plugin to allow the staging of a freshly built plugin into the local
repository for integration testing, then pull it back out for actual
installation/deployment/whatever.
Added:
maven/sandbox/plugins/maven-plugin-test-plugin/
maven/sandbox/plugins/maven-plugin-test-plugin/pom.xml (with props)
maven/sandbox/plugins/maven-plugin-test-plugin/src/
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/StagedInstallMojo.java
(with props)
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/StagedUninstallMojo.java
(with props)
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/backup/
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/backup/PluginBackupManager.java
(with props)
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/DefaultPluginManagerAccess.java
(with props)
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/PluginManagerAccess.java
(with props)
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/PluginStagingException.java
(with props)
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/PluginStagingManager.java
(with props)
Added: maven/sandbox/plugins/maven-plugin-test-plugin/pom.xml
URL:
http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-plugin-test-plugin/pom.xml?rev=430505&view=auto
==============================================================================
--- maven/sandbox/plugins/maven-plugin-test-plugin/pom.xml (added)
+++ maven/sandbox/plugins/maven-plugin-test-plugin/pom.xml Thu Aug 10 12:53:38
2006
@@ -0,0 +1,72 @@
+<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.apache.maven.plugins</groupId>
+ <artifactId>maven-plugin-test-plugin</artifactId>
+ <packaging>maven-plugin</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <name>Maven Mojo Archetype</name>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>file-management</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ <version>2.0.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-core</artifactId>
+ <version>2.0.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact</artifactId>
+ <version>2.0.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact-manager</artifactId>
+ <version>2.0.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-plugin-plugin</artifactId>
+ <version>2.1</version>
+ <type>maven-plugin</type>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-plugin-plugin</artifactId>
+ <configuration>
+ <goalPrefix>plugin-test</goalPrefix>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>create-component-descriptor</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>descriptor</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Propchange: maven/sandbox/plugins/maven-plugin-test-plugin/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/plugins/maven-plugin-test-plugin/pom.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/StagedInstallMojo.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/StagedInstallMojo.java?rev=430505&view=auto
==============================================================================
---
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/StagedInstallMojo.java
(added)
+++
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/StagedInstallMojo.java
Thu Aug 10 12:53:38 2006
@@ -0,0 +1,152 @@
+package org.apache.maven.plugin.plugintest;
+
+/*
+ * 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.
+ */
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.installer.ArtifactInstaller;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.plugintest.backup.PluginBackupManager;
+import org.apache.maven.plugin.plugintest.manager.PluginManagerAccess;
+import org.apache.maven.plugin.plugintest.stage.PluginStagingException;
+import org.apache.maven.plugin.plugintest.stage.PluginStagingManager;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Stages a plugin for integration testing.
+ *
+ * @goal stage
+ *
+ * @phase pre-integration-test
+ */
+public class StagedInstallMojo
+ extends AbstractMojo
+{
+
+ /**
+ * @parameter default-value="${project.artifact}"
+ * @required
+ * @readonly
+ */
+ private Artifact projectArtifact;
+
+ /**
+ * @parameter default-value="${project.file}"
+ * @required
+ * @readonly
+ */
+ private File pomFile;
+
+ /**
+ * @component
+ */
+ private ArtifactFactory artifactFactory;
+
+ /**
+ * @parameter default-value="${localRepository}"
+ * @required
+ * @readonly
+ */
+ private ArtifactRepository localRepository;
+
+ /**
+ * @component
+ */
+ private ArtifactInstaller artifactInstaller;
+
+ /**
+ * @parameter
+ */
+ private String goalPrefix;
+
+ /**
+ * @parameter default-value="${project.name}"
+ * @required
+ * @readonly
+ */
+ private String projectName;
+
+ /**
+ * @parameter default-value="${project.packaging}"
+ * @required
+ * @readonly
+ */
+ private String projectPackaging;
+
+ /**
+ * @parameter
default-value="${project.build.directory}/plugin-staging-backup"
+ * @required
+ */
+ private File backupDirectory;
+
+ /**
+ * @component
+ */
+ private PluginManagerAccess pluginManagerAccess;
+
+ public void execute()
+ throws MojoExecutionException
+ {
+ // 1. backup the local-repository section for the plugin...put it in a
place that's easy to restore from.
+ PluginBackupManager backupManager = new PluginBackupManager(
localRepository, getLog() );
+
+ try
+ {
+ backupManager.backupInstalledPluginData( projectArtifact,
backupDirectory );
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "Error backing up plugin for
testing.", e );
+ }
+
+ // 2. create a new artifact, to attach metadata to it.
+ PluginStagingManager stagingManager =
+ new PluginStagingManager( localRepository, artifactFactory,
artifactInstaller, getLog() );
+
+ Artifact artifact = stagingManager.duplicateProjectArtifact(
projectArtifact, projectPackaging );
+
+ // 3. add the plugin metadata for 'installing' into the local repo
+ stagingManager.addPluginMetadata( artifact, projectName, goalPrefix );
+
+ // 4. install the current plugin into the local repository
+ try
+ {
+ stagingManager.installPlugin( artifact, pomFile );
+ }
+ catch ( PluginStagingException e )
+ {
+ try
+ {
+ backupManager.restorePluginData( backupDirectory );
+ }
+ catch ( IOException ioe )
+ {
+ getLog().error( "Error restoring plugin data backed up to: \'"
+ backupDirectory + "\' on plugin staging failure.", ioe );
+ }
+
+ throw new MojoExecutionException( "Error staging plugin: " +
e.getMessage(), e );
+ }
+
+ // 5. clean up any plugin containers associated with this plugin's
info...so it will reload
+ pluginManagerAccess.clearPluginData( projectArtifact );
+ }
+
+}
Propchange:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/StagedInstallMojo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/StagedInstallMojo.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/StagedUninstallMojo.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/StagedUninstallMojo.java?rev=430505&view=auto
==============================================================================
---
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/StagedUninstallMojo.java
(added)
+++
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/StagedUninstallMojo.java
Thu Aug 10 12:53:38 2006
@@ -0,0 +1,81 @@
+package org.apache.maven.plugin.plugintest;
+
+/*
+ * 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.
+ */
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.plugintest.backup.PluginBackupManager;
+import org.apache.maven.plugin.plugintest.manager.PluginManagerAccess;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Remove staged plugin information from the local repository.
+ *
+ * @goal unstage
+ *
+ * @phase post-integration-test
+ */
+public class StagedUninstallMojo
+ extends AbstractMojo
+{
+
+ /**
+ * @parameter default-value="${project.artifact}"
+ * @required
+ * @readonly
+ */
+ private Artifact projectArtifact;
+
+ /**
+ * @parameter default-value="${localRepository}"
+ * @required
+ * @readonly
+ */
+ private ArtifactRepository localRepository;
+
+ /**
+ * @parameter
default-value="${project.build.directory}/plugin-staging-backup"
+ * @required
+ */
+ private File backupDirectory;
+
+ /**
+ * @component
+ */
+ private PluginManagerAccess pluginManagerAccess;
+
+ public void execute()
+ throws MojoExecutionException
+ {
+ PluginBackupManager backupManager = new PluginBackupManager(
localRepository, getLog() );
+
+ try
+ {
+ backupManager.restorePluginData( backupDirectory );
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "Error un-staging plugin: " +
e.getMessage(), e );
+ }
+
+ pluginManagerAccess.clearPluginData( projectArtifact );
+ }
+}
Propchange:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/StagedUninstallMojo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/StagedUninstallMojo.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/backup/PluginBackupManager.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/backup/PluginBackupManager.java?rev=430505&view=auto
==============================================================================
---
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/backup/PluginBackupManager.java
(added)
+++
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/backup/PluginBackupManager.java
Thu Aug 10 12:53:38 2006
@@ -0,0 +1,119 @@
+package org.apache.maven.plugin.plugintest.backup;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import
org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.GroupRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.Versioning;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.project.artifact.ProjectArtifactMetadata;
+import org.apache.maven.shared.model.fileset.FileSet;
+import org.apache.maven.shared.model.fileset.util.FileSetManager;
+import org.codehaus.plexus.util.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+
+public class PluginBackupManager
+{
+
+ private final Log log;
+
+ private final ArtifactRepository localRepository;
+
+ public PluginBackupManager( ArtifactRepository localRepository, Log log )
+ {
+ this.localRepository = localRepository;
+ this.log = log;
+ }
+
+ public void backupInstalledPluginData( Artifact projectArtifact, File
backupDirectory )
+ throws IOException
+ {
+ ArtifactRepositoryLayout layout = localRepository.getLayout();
+
+ File basedir = new File( localRepository.getBasedir() );
+
+ // find the directory where plugin-group metadata is stored...for
prefix mappings.
+ GroupRepositoryMetadata groupMetadata = new GroupRepositoryMetadata(
projectArtifact.getGroupId() );
+
+ String relativePath = layout.pathOfLocalRepositoryMetadata(
groupMetadata, localRepository );
+
+ File localPath = new File( basedir, relativePath );
+
+ File groupMetadataDir = localPath.getParentFile();
+
+ backup( groupMetadataDir, "**/maven-metadata*.xml", relativePath,
backupDirectory );
+
+ // find the directory where plugin-artifact metadata is stored...for
snapshot versioning.
+ Versioning versioning = new Versioning();
+ versioning.setLatest( projectArtifact.getVersion() );
+ versioning.updateTimestamp();
+
+ ArtifactRepositoryMetadata artifactMetadata = new
ArtifactRepositoryMetadata( projectArtifact, versioning );
+
+ relativePath = layout.pathOfLocalRepositoryMetadata( artifactMetadata,
localRepository );
+
+ localPath = new File( basedir, relativePath );
+
+ File artifactMetadataDir = localPath.getParentFile();
+
+ backup( artifactMetadataDir, "**/maven-metadata*", relativePath,
backupDirectory );
+
+ // find the directory where the plugin artifact itself is stored...in
case a file gets overwritten.
+ relativePath = layout.pathOf( projectArtifact );
+
+ localPath = new File( basedir, relativePath );
+
+ File artifactDir = localPath.getParentFile();
+
+ backup( artifactDir, "**/*", relativePath, backupDirectory );
+
+ // find the directory where the plugin POM is stored...in case the POM
version is the same.
+ ProjectArtifactMetadata pomMetadata = new ProjectArtifactMetadata(
projectArtifact );
+
+ relativePath = layout.pathOfLocalRepositoryMetadata( pomMetadata,
localRepository );
+
+ localPath = new File( basedir, relativePath );
+
+ File pomDir = localPath.getParentFile();
+
+ backup( pomDir, "**/*", relativePath, backupDirectory );
+ }
+
+ private void backup( File groupMetadataDir, String pattern, String
relativePath, File backupDirectory )
+ throws IOException
+ {
+ FileSet fs = new FileSet();
+
+ fs.setDirectory( groupMetadataDir.getAbsolutePath() );
+ fs.addInclude( pattern );
+
+ FileSetManager fsm = new FileSetManager( log );
+
+ String[] includedFiles = fsm.getIncludedFiles( fs );
+
+ File destDir = new File( backupDirectory, relativePath );
+ destDir.mkdirs();
+
+ for ( int i = 0; i < includedFiles.length; i++ )
+ {
+ File src = new File( groupMetadataDir, includedFiles[i] );
+ File dest = new File( destDir, includedFiles[i] );
+
+ dest.getParentFile().mkdirs();
+
+ FileUtils.copyFile( src, dest );
+ }
+ }
+
+ public void restorePluginData( File backupDirectory )
+ throws IOException
+ {
+ File localRepoDir = new File( localRepository.getBasedir() );
+
+ FileUtils.copyDirectory( backupDirectory, localRepoDir );
+ }
+
+}
Propchange:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/backup/PluginBackupManager.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/backup/PluginBackupManager.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/DefaultPluginManagerAccess.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/DefaultPluginManagerAccess.java?rev=430505&view=auto
==============================================================================
---
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/DefaultPluginManagerAccess.java
(added)
+++
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/DefaultPluginManagerAccess.java
Thu Aug 10 12:53:38 2006
@@ -0,0 +1,48 @@
+package org.apache.maven.plugin.plugintest.manager;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.MavenPluginCollector;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.context.Context;
+import org.codehaus.plexus.context.ContextException;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+
+/**
+ * @plexus.component
role="org.apache.maven.plugin.plugintest.manager.PluginManagerAccess"
role-hint="default"
+ * @author jdcasey
+ *
+ */
+public class DefaultPluginManagerAccess
+ implements PluginManagerAccess, Contextualizable
+{
+
+ /**
+ * @plexus.requirement
+ */
+ MavenPluginCollector pluginCollector;
+
+ private PlexusContainer container;
+
+ public void clearPluginData( Artifact pluginArtifact )
+ {
+ Plugin plugin = new Plugin();
+
+ plugin.setArtifactId( pluginArtifact.getArtifactId() );
+ plugin.setGroupId( pluginArtifact.getGroupId() );
+
+ pluginCollector.flushPluginDescriptor( plugin );
+
+ String key = plugin.getKey();
+
+ container.removeChildContainer( key );
+ }
+
+ public void contextualize( Context context )
+ throws ContextException
+ {
+ this.container = (PlexusContainer) context.get(
PlexusConstants.PLEXUS_KEY );
+ }
+
+}
Propchange:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/DefaultPluginManagerAccess.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/DefaultPluginManagerAccess.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/PluginManagerAccess.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/PluginManagerAccess.java?rev=430505&view=auto
==============================================================================
---
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/PluginManagerAccess.java
(added)
+++
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/PluginManagerAccess.java
Thu Aug 10 12:53:38 2006
@@ -0,0 +1,10 @@
+package org.apache.maven.plugin.plugintest.manager;
+
+import org.apache.maven.artifact.Artifact;
+
+public interface PluginManagerAccess
+{
+
+ void clearPluginData( Artifact pluginArtifact );
+
+}
Propchange:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/PluginManagerAccess.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/manager/PluginManagerAccess.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/PluginStagingException.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/PluginStagingException.java?rev=430505&view=auto
==============================================================================
---
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/PluginStagingException.java
(added)
+++
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/PluginStagingException.java
Thu Aug 10 12:53:38 2006
@@ -0,0 +1,17 @@
+package org.apache.maven.plugin.plugintest.stage;
+
+public class PluginStagingException
+ extends Exception
+{
+
+ public PluginStagingException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+
+ public PluginStagingException( String message )
+ {
+ super( message );
+ }
+
+}
Propchange:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/PluginStagingException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/PluginStagingException.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/PluginStagingManager.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/PluginStagingManager.java?rev=430505&view=auto
==============================================================================
---
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/PluginStagingManager.java
(added)
+++
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/PluginStagingManager.java
Thu Aug 10 12:53:38 2006
@@ -0,0 +1,115 @@
+package org.apache.maven.plugin.plugintest.stage;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.installer.ArtifactInstallationException;
+import org.apache.maven.artifact.installer.ArtifactInstaller;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import
org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.GroupRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.Versioning;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.project.artifact.ProjectArtifactMetadata;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.Iterator;
+
+public class PluginStagingManager
+{
+
+ private ArtifactFactory artifactFactory;
+
+ private final Log log;
+
+ private ArtifactRepository localRepository;
+
+ private ArtifactInstaller installer;
+
+ public PluginStagingManager( ArtifactRepository localRepository,
ArtifactFactory artifactFactory,
+ ArtifactInstaller installer, Log log )
+ {
+ this.localRepository = localRepository;
+ this.artifactFactory = artifactFactory;
+ this.installer = installer;
+ this.log = log;
+ }
+
+ public Artifact duplicateProjectArtifact( Artifact projectArtifact, String
projectPackaging )
+ {
+ Artifact artifact =
+ artifactFactory.createBuildArtifact( projectArtifact.getGroupId(),
projectArtifact.getArtifactId(),
+ projectArtifact.getVersion(),
projectPackaging );
+
+ artifact.setFile( projectArtifact.getFile() );
+
+ Collection metadataList = projectArtifact.getMetadataList();
+
+ if ( metadataList != null )
+ {
+ for ( Iterator iter = metadataList.iterator(); iter.hasNext(); )
+ {
+ ArtifactMetadata metadata = ( ArtifactMetadata ) iter.next();
+
+ artifact.addMetadata( metadata );
+ }
+ }
+
+ return artifact;
+ }
+
+ public void addPluginMetadata( Artifact artifact, String projectName,
String goalPrefixOverride )
+ {
+ Versioning versioning = new Versioning();
+ versioning.setLatest( artifact.getVersion() );
+ versioning.updateTimestamp();
+ ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata(
artifact, versioning );
+ artifact.addMetadata( metadata );
+
+ GroupRepositoryMetadata groupMetadata = new GroupRepositoryMetadata(
artifact.getGroupId() );
+ groupMetadata.addPluginMapping( getGoalPrefix( goalPrefixOverride,
artifact ), artifact.getArtifactId(),
+ projectName );
+
+ artifact.addMetadata( groupMetadata );
+ }
+
+ private String getGoalPrefix( String goalPrefixOverride, Artifact artifact
)
+ {
+ if ( goalPrefixOverride == null )
+ {
+ goalPrefixOverride = PluginDescriptor.getGoalPrefixFromArtifactId(
artifact.getArtifactId() );
+ }
+
+ return goalPrefixOverride;
+ }
+
+ public void installPlugin( Artifact artifact, File pomFile )
+ throws PluginStagingException
+ {
+ try
+ {
+ ArtifactMetadata metadata = new ProjectArtifactMetadata( artifact,
pomFile );
+ artifact.addMetadata( metadata );
+
+ File file = artifact.getFile();
+
+ // Here, we have a temporary solution to MINSTALL-3 (isDirectory()
is true if it went through compile
+ // but not package). We are designing in a proper solution for
Maven 2.1
+ if ( file != null && !file.isDirectory() )
+ {
+ installer.install( file, artifact, localRepository );
+ }
+ else
+ {
+ throw new PluginStagingException(
+ "The packaging for this
project did not assign a file to the build artifact" );
+ }
+ }
+ catch ( ArtifactInstallationException e )
+ {
+ throw new PluginStagingException( e.getMessage(), e );
+ }
+ }
+}
Propchange:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/PluginStagingManager.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/sandbox/plugins/maven-plugin-test-plugin/src/main/java/org/apache/maven/plugin/plugintest/stage/PluginStagingManager.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"