Author: vmassol
Date: Sun Aug 14 06:19:12 2005
New Revision: 232602
URL: http://svn.apache.org/viewcvs?rev=232602&view=rev
Log:
MNG-150: Create a rar mojo. Applied on behalf of snicoll.
Added:
maven/components/trunk/sandbox/maven-rar-plugin/
maven/components/trunk/sandbox/maven-rar-plugin/pom.xml (with props)
maven/components/trunk/sandbox/maven-rar-plugin/src/
maven/components/trunk/sandbox/maven-rar-plugin/src/main/
maven/components/trunk/sandbox/maven-rar-plugin/src/main/java/
maven/components/trunk/sandbox/maven-rar-plugin/src/main/java/org/
maven/components/trunk/sandbox/maven-rar-plugin/src/main/java/org/apache/
maven/components/trunk/sandbox/maven-rar-plugin/src/main/java/org/apache/maven/
maven/components/trunk/sandbox/maven-rar-plugin/src/main/java/org/apache/maven/plugin/
maven/components/trunk/sandbox/maven-rar-plugin/src/main/java/org/apache/maven/plugin/rar/
maven/components/trunk/sandbox/maven-rar-plugin/src/main/java/org/apache/maven/plugin/rar/RarMojo.java
(with props)
Modified:
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
Modified:
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=232602&r1=232601&r2=232602&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
(original)
+++
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
Sun Aug 14 06:19:12 2005
@@ -308,6 +308,30 @@
</component>
<component>
+ <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
+ <role-hint>rar</role-hint>
+
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
+ <configuration>
+ <!-- START SNIPPET: rar-lifecycle -->
+ <phases>
+
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
+
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
+
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
+
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
+ <test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
+ <package>
+ org.apache.maven.plugins:maven-jar-plugin:jar,
+ org.apache.maven.plugins:maven-source-plugin:jar,
+ org.apache.maven.plugins:maven-rar-plugin:rar
+ </package>
+
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
+ <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
+ </phases>
+ <!-- END SNIPPET: rar-lifecycle -->
+ </configuration>
+ </component>
+
+ <component>
<role>org.apache.maven.plugin.version.PluginVersionManager</role>
<role-hint>default</role-hint>
<implementation>org.apache.maven.plugin.version.DefaultPluginVersionManager</implementation>
Added: maven/components/trunk/sandbox/maven-rar-plugin/pom.xml
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/sandbox/maven-rar-plugin/pom.xml?rev=232602&view=auto
==============================================================================
--- maven/components/trunk/sandbox/maven-rar-plugin/pom.xml (added)
+++ maven/components/trunk/sandbox/maven-rar-plugin/pom.xml Sun Aug 14 06:19:12
2005
@@ -0,0 +1,24 @@
+<model>
+ <parent>
+ <artifactId>maven-plugin-parent</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <version>2.0-beta-1-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>maven-rar-plugin</artifactId>
+ <packaging>maven-plugin</packaging>
+ <name>Maven Rar plugin</name>
+ <version>2.0-beta-1-SNAPSHOT</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-archiver</artifactId>
+ <version>2.0-beta-1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-project</artifactId>
+ <version>2.0-beta-1-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</model>
Propchange: maven/components/trunk/sandbox/maven-rar-plugin/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/sandbox/maven-rar-plugin/pom.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/components/trunk/sandbox/maven-rar-plugin/src/main/java/org/apache/maven/plugin/rar/RarMojo.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/sandbox/maven-rar-plugin/src/main/java/org/apache/maven/plugin/rar/RarMojo.java?rev=232602&view=auto
==============================================================================
---
maven/components/trunk/sandbox/maven-rar-plugin/src/main/java/org/apache/maven/plugin/rar/RarMojo.java
(added)
+++
maven/components/trunk/sandbox/maven-rar-plugin/src/main/java/org/apache/maven/plugin/rar/RarMojo.java
Sun Aug 14 06:19:12 2005
@@ -0,0 +1,221 @@
+package org.apache.maven.plugin.rar;
+
+/*
+ * 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.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.archiver.MavenArchiver;
+import org.apache.maven.archiver.MavenArchiveConfiguration;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.artifact.Artifact;
+import org.codehaus.plexus.util.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * Builds J2EE Resource Adapter Archive (RAR) files.
+ *
+ * @author <a href="[EMAIL PROTECTED]">Stephane Nicoll</a>
+ * @version $Id$
+ * @goal rar
+ * @phase package
+ * @requiresDependencyResolution test
+ * @description builds a rar
+ */
+public class RarMojo
+ extends AbstractMojo
+{
+ public static final String RA_XML_URI = "META-INF/ra.xml";
+
+
+ /**
+ * Single directory for extra files to include in the RAR.
+ *
+ * @parameter expression="${basedir}/src/rar"
+ * @required
+ */
+ private String rarSourceDirectory;
+
+ /**
+ * The location of the ra.xml file to be used within the rar file.
+ *
+ * @parameter expression="${basedir}/src/rar/META-INF/ra.xml"
+ */
+ private String raXmlLocation;
+
+ /**
+ * Specify if the generated jar file of this project should be
+ * included in the rar file ; default is true.
+ *
+ * @parameter
+ */
+ private Boolean includeJar = Boolean.TRUE;
+
+ /**
+ * The location of the manifest file to be used within the rar file.
+ *
+ * @parameter expression="${basedir}/src/rar/META-INF/MANIFEST.MF"
+ * @TODO handle this field
+ */
+ private String manifestLocation;
+
+ /**
+ * Directory that resources are copied to during the build.
+ *
+ * @parameter
expression="${project.build.directory}/${project.build.finalName}"
+ * @required
+ */
+ private String workDirectory;
+
+ /**
+ * The directory for the generated RAR.
+ *
+ * @parameter expression="${project.build.directory}"
+ * @required
+ */
+ private String outputDirectory;
+
+ /**
+ * The name of the RAR file to generate.
+ *
+ * @parameter alias="rarName" expression="${project.build.finalName}"
+ * @required
+ * @readonly
+ */
+ private String finalName;
+
+ /**
+ * The maven project.
+ *
+ * @parameter expression="${project}"
+ * @required
+ * @readonly
+ * @description "the maven project to use"
+ */
+ private MavenProject project;
+
+ /**
+ * The maven archiver to use.
+ *
+ * @parameter
+ */
+ private MavenArchiveConfiguration archive = new
MavenArchiveConfiguration();
+
+
+ private File buildDir;
+
+
+ public void execute()
+ throws MojoExecutionException
+ {
+ getLog().debug( " ======= RarMojo settings =======" );
+ getLog().debug( "rarSourceDirectory[" + rarSourceDirectory + "]" );
+ getLog().debug( "manifestLocation[" + manifestLocation + "]" );
+ getLog().debug( "raXmlLocation[" + raXmlLocation + "]" );
+ getLog().debug( "workDirectory[" + workDirectory + "]" );
+ getLog().debug( "outputDirectory[" + outputDirectory + "]" );
+ getLog().debug( "finalName[" + finalName + "]" );
+
+ // Check if jar file is there and if requested, copy it
+ try
+ {
+ if (includeJar.booleanValue()) {
+ File generatedJarFile = new File( outputDirectory, finalName +
".jar" );
+ if (generatedJarFile.exists()) {
+ getLog().info( "Including generated jar
file["+generatedJarFile.getName()+"]");
+ FileUtils.copyFileToDirectory( generatedJarFile,
getBuildDir());
+ }
+ }
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "Error copying generated Jar
file", e );
+ }
+
+ // Copy dependencies
+ try
+ {
+ Set artifacts = project.getArtifacts();
+ for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
+ {
+ Artifact artifact = (Artifact) iter.next();
+ if ( !Artifact.SCOPE_TEST.equals( artifact.getScope() ) &&
+ !Artifact.SCOPE_PROVIDED.equals( artifact.getScope() ) )
+ {
+ getLog().info("Copying artifact[" + artifact.getGroupId()
+ ", " + artifact.getId() + ", " +
+ artifact.getScope() + "]");
+ FileUtils.copyFileToDirectory( artifact.getFile(),
getBuildDir() );
+ }
+ }
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "Error copying RAR
dependencies", e );
+ }
+
+ // Copy source files
+ try
+ {
+ File rarSourceDir = new File( rarSourceDirectory );
+ if ( rarSourceDir.exists() )
+ {
+ getLog().info( "Copy rar resources to " +
getBuildDir().getAbsolutePath() );
+ FileUtils.copyDirectoryStructure( rarSourceDir, getBuildDir()
);
+ }
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "Error copying RAR resources", e
);
+ }
+
+ // Check if connector deployment descriptor is there
+ File ddFile = new File( getBuildDir(), RA_XML_URI );
+ if ( !ddFile.exists() )
+ {
+ getLog().warn(
+ "Connector deployment descriptor: " + ddFile.getAbsolutePath()
+ " does not exist." );
+ }
+
+ try
+ {
+ File rarFile = new File( outputDirectory, finalName + ".rar" );
+ MavenArchiver archiver = new MavenArchiver();
+ archiver.setOutputFile( rarFile );
+
+ archiver.getArchiver().addDirectory( getBuildDir() );
+ archiver.createArchive( project, archive );
+ }
+ catch ( Exception e )
+ {
+ throw new MojoExecutionException( "Error assembling RAR", e );
+ }
+
+
+ }
+
+ protected File getBuildDir()
+ {
+ if ( buildDir == null )
+ {
+ buildDir = new File( workDirectory );
+ }
+ return buildDir;
+ }
+}
Propchange:
maven/components/trunk/sandbox/maven-rar-plugin/src/main/java/org/apache/maven/plugin/rar/RarMojo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/components/trunk/sandbox/maven-rar-plugin/src/main/java/org/apache/maven/plugin/rar/RarMojo.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]