From 9b18d72e343b317d31cc4239014b34e2cb51916d Mon Sep 17 00:00:00 2001 From: Marvin Froeder Date: Tue, 6 Oct 2009 19:47:17 +0000 Subject: [PATCH] IN PROGRESS - issue NXCM-1165: Move plugin IT's into plugin module https://issues.sonatype.org/browse/NXCM-1165 git-svn-id: file:///opt/svn/repositories/sonatype.org/plugins/trunk/nexus-test-environment-maven-plugin@336 c2a14038-686d-4adc-8740-a14e5738cb64 --- .../AbstractEnvironmentMojo.java | 32 +---- .../testenvironment/PackageTestsMojo.java | 121 ++++++++++++++++++ 2 files changed, 122 insertions(+), 31 deletions(-) create mode 100644 src/main/java/org/sonatype/plugin/nexus/testenvironment/PackageTestsMojo.java diff --git a/src/main/java/org/sonatype/plugin/nexus/testenvironment/AbstractEnvironmentMojo.java b/src/main/java/org/sonatype/plugin/nexus/testenvironment/AbstractEnvironmentMojo.java index c8bbf34fa4..b3f54a02fb 100644 --- a/src/main/java/org/sonatype/plugin/nexus/testenvironment/AbstractEnvironmentMojo.java +++ b/src/main/java/org/sonatype/plugin/nexus/testenvironment/AbstractEnvironmentMojo.java @@ -29,7 +29,6 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.project.MavenProject; import org.apache.maven.project.MavenProjectBuilder; -import org.apache.maven.project.MavenProjectHelper; import org.apache.maven.shared.artifact.filter.collection.ArtifactFilterException; import org.apache.maven.shared.artifact.filter.collection.ArtifactIdFilter; import org.apache.maven.shared.artifact.filter.collection.ClassifierFilter; @@ -40,10 +39,7 @@ import org.apache.maven.shared.filtering.MavenFilteringException; import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusContainer; -import org.codehaus.plexus.archiver.Archiver; -import org.codehaus.plexus.archiver.ArchiverException; import org.codehaus.plexus.archiver.UnArchiver; -import org.codehaus.plexus.archiver.zip.ZipArchiver; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; import org.codehaus.plexus.context.Context; import org.codehaus.plexus.context.ContextException; @@ -177,11 +173,6 @@ public class AbstractEnvironmentMojo */ private boolean extractNexusPluginsJavascript; - /** - * @component - */ - private MavenProjectHelper projectHelper; - public void execute() throws MojoExecutionException, MojoFailureException { @@ -280,15 +271,6 @@ public void execute() if ( resourcesSourceLocation.isDirectory() ) { project.getProperties().put( "test-resources-source-folder", getPath( resourcesSourceLocation ) ); - - try - { - attachResources(); - } - catch ( Exception e ) - { - throw new MojoFailureException( "Unable to attach 'resources' bundle", e ); - } } // start default configs @@ -357,19 +339,6 @@ protected Artifact getNexusBundle() return getMavenArtifact( nexusBundleArtifact ); } - private void attachResources() - throws ArchiverException, IOException, ComponentLookupException - { - ZipArchiver za = (ZipArchiver) plexus.lookup( Archiver.ROLE, "zip" ); - za.addDirectory( resourcesSourceLocation ); - File destFile = - new File( project.getBuild().getDirectory(), project.getBuild().getFinalName() + "-resources.zip" ); - za.setDestFile( destFile ); - za.createArchive(); - - projectHelper.attachArtifact( project, "zip", "resources", destFile ); - } - private void extractPluginJs() throws MojoExecutionException { @@ -892,6 +861,7 @@ private Set getFilteredArtifacts( String groupId, String artifactId, S return filtterArtifacts( projectArtifacts, filter ); } + @SuppressWarnings( "unchecked" ) private Set filtterArtifacts( Set projectArtifacts, FilterArtifacts filter ) throws MojoExecutionException { diff --git a/src/main/java/org/sonatype/plugin/nexus/testenvironment/PackageTestsMojo.java b/src/main/java/org/sonatype/plugin/nexus/testenvironment/PackageTestsMojo.java new file mode 100644 index 0000000000..edda0efee6 --- /dev/null +++ b/src/main/java/org/sonatype/plugin/nexus/testenvironment/PackageTestsMojo.java @@ -0,0 +1,121 @@ +package org.sonatype.plugin.nexus.testenvironment; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +import org.apache.maven.model.Resource; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.MavenProjectHelper; +import org.codehaus.plexus.archiver.Archiver; +import org.codehaus.plexus.archiver.ArchiverException; +import org.codehaus.plexus.archiver.manager.ArchiverManager; +import org.codehaus.plexus.archiver.manager.NoSuchArchiverException; + +/** + * @author velo + * @goal package + * @phase package + */ +public class PackageTestsMojo + extends AbstractMojo +{ + + /** + * @component + */ + private ArchiverManager archiverManager; + + /** + * @component + */ + private MavenProjectHelper projectHelper; + + /** + * The maven project. + * + * @parameter expression="${project}" + * @required + * @readonly + */ + private MavenProject project; + + /** + * @parameter default-value="${project.build.testOutputDirectory}" + */ + private File testClasses; + + /** + * @parameter default-value="${project.testResources}" + */ + private List testResources; + + /** + * @parameter default-value="${basedir}/resources" + */ + private File resourcesSourceLocation; + + /** + * @parameter default-value="${project.build.directory}/${project.build.finalName}-test-resources.zip" + */ + private File destinationFile; + + @SuppressWarnings( "unchecked" ) + public void execute() + throws MojoExecutionException, MojoFailureException + { + Archiver archiver; + try + { + archiver = archiverManager.getArchiver( "zip" ); + } + catch ( NoSuchArchiverException e ) + { + throw new MojoExecutionException( e.getMessage(), e ); + } + + archiver.setDestFile( destinationFile ); + try + { + if ( testClasses.exists() ) + { + archiver.addDirectory( testClasses, "classes/" ); + } + + if ( resourcesSourceLocation.exists() ) + { + archiver.addDirectory( resourcesSourceLocation, "resources/" ); + } + + for ( Resource resource : testResources ) + { + File dir = new File( resource.getDirectory() ); + if ( !dir.exists() ) + { + continue; + } + + String[] includes = (String[]) resource.getIncludes().toArray( new String[0] ); + String[] excludes = (String[]) resource.getExcludes().toArray( new String[0] ); + + archiver.addDirectory( dir, "test-resources/", includes, excludes ); + } + + archiver.createArchive(); + } + catch ( ArchiverException e ) + { + throw new MojoExecutionException( e.getMessage(), e ); + } + catch ( IOException e ) + { + throw new MojoExecutionException( e.getMessage(), e ); + } + + projectHelper.attachArtifact( project, "zip", "test-resources", destinationFile ); + } + +}