You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2009/04/05 08:48:26 UTC

svn commit: r762046 [2/2] - in /tuscany/maven-plugins/trunk/maven-zip-plugin: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/tuscany/ src/main/java/org/apache/tuscany/maven/ src/main/java/org/apac...

Added: tuscany/maven-plugins/trunk/maven-zip-plugin/src/main/java/org/apache/tuscany/maven/zip/ZipMojo.java
URL: http://svn.apache.org/viewvc/tuscany/maven-plugins/trunk/maven-zip-plugin/src/main/java/org/apache/tuscany/maven/zip/ZipMojo.java?rev=762046&view=auto
==============================================================================
--- tuscany/maven-plugins/trunk/maven-zip-plugin/src/main/java/org/apache/tuscany/maven/zip/ZipMojo.java (added)
+++ tuscany/maven-plugins/trunk/maven-zip-plugin/src/main/java/org/apache/tuscany/maven/zip/ZipMojo.java Sun Apr  5 06:48:25 2009
@@ -0,0 +1,195 @@
+package org.apache.tuscany.maven.zip;
+
+/*
+ * 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 java.io.File;
+import java.io.IOException;
+
+import org.apache.maven.archiver.MavenArchiver;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.project.MavenProjectHelper;
+import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.archiver.jar.ManifestException;
+
+/**
+ * Build an SCA ZIP contribution.
+ *
+ * Based on code from the Maven WAR plugin 2.0.2 by Emmanuel Venisse
+ * 
+ * @goal zip
+ * @phase package
+ * @requiresDependencyResolution runtime
+ */
+public class ZipMojo
+    extends AbstractZipMojo
+{
+    /**
+     * The directory for the generated contribution.
+     *
+     * @parameter expression="${project.build.directory}"
+     * @required
+     */
+    private String outputDirectory;
+
+    /**
+     * The name of the generated contribution.
+     *
+     * @parameter expression="${project.build.finalName}"
+     * @required
+     */
+    private String contributionName;
+
+    /**
+     * Classifier to add to the artifact generated. If given, the artifact will be an attachment instead.
+     *
+     * @parameter
+     */
+    private String classifier;
+
+    /**
+     * The Jar archiver.
+     *
+     */
+    private ZipArchiver Archiver = new ZipArchiver();
+
+
+    /**
+     * @component
+     */
+    private MavenProjectHelper projectHelper;
+
+    /**
+     * Whether this is the main artifact being built. Set to <code>false</code> if you don't want to install or
+     * deploy it to the local repository instead of the default one in an execution.
+     *
+     * @parameter expression="${primaryArtifact}" default-value="true"
+     */
+    private boolean primaryArtifact;
+
+    // ----------------------------------------------------------------------
+    // Implementation
+    // ----------------------------------------------------------------------
+
+    /**
+     * Overload this to produce a test-war, for example.
+     */
+    protected String getClassifier()
+    {
+        return classifier;
+    }
+
+    protected static File getFile( File basedir, String finalName, String classifier )
+    {
+        if ( classifier == null )
+        {
+            classifier = "";
+        }
+        else if ( classifier.trim().length() > 0 && !classifier.startsWith( "-" ) )
+        {
+            classifier = "-" + classifier;
+        }
+
+        return new File( basedir, finalName + classifier + ".zip" );
+    }
+
+    /**
+     * Executes the Mojo on the current project.
+     *
+     * @throws MojoExecutionException if an error occured while building the SCA ZIP contribution
+     */
+    public void execute()
+        throws MojoExecutionException, MojoFailureException
+    {
+        File File = getFile( new File( outputDirectory ), contributionName, classifier );
+
+        try
+        {
+            performPackaging( File );
+        }
+        catch ( DependencyResolutionRequiredException e )
+        {
+            throw new MojoExecutionException( "Error assembling SCA ZIP: " + e.getMessage(), e );
+        }
+        catch ( ManifestException e )
+        {
+            throw new MojoExecutionException( "Error assembling SCA ZIP", e );
+        }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException( "Error assembling SCA ZIP", e );
+        }
+        catch ( ArchiverException e )
+        {
+            throw new MojoExecutionException( "Error assembling SCA ZIP: " + e.getMessage(), e );
+        }
+    }
+
+    /**
+     * Generates the SCA ZIP contribution according to the <tt>mode</tt> attribute.
+     *
+     * @param File the target war file
+     * @throws IOException
+     * @throws ArchiverException
+     * @throws ManifestException
+     * @throws DependencyResolutionRequiredException
+     *
+     */
+    private void performPackaging( File File )
+        throws IOException, ArchiverException, ManifestException, DependencyResolutionRequiredException,
+        MojoExecutionException, MojoFailureException
+    {
+        buildExplodedWebapp( getZipDirectory() );
+
+        //generate war file
+        getLog().info( "Generating SCA ZIP contribution " + File.getAbsolutePath() );
+
+        MavenArchiver archiver = new MavenArchiver();
+
+        archiver.setArchiver( Archiver );
+
+        archiver.setOutputFile( File );
+
+        Archiver.addDirectory( getZipDirectory(), getIncludes(), getExcludes() );
+
+        // create archive
+        archiver.createArchive( getProject(), archive );
+
+        String classifier = this.classifier;
+        if ( classifier != null )
+        {
+            projectHelper.attachArtifact( getProject(), "", classifier, File );
+        }
+        else
+        {
+            Artifact artifact = getProject().getArtifact();
+            if ( primaryArtifact )
+            {
+                artifact.setFile( File );
+            }
+            else if ( artifact.getFile() == null || artifact.getFile().isDirectory() )
+            {
+                artifact.setFile( File );
+            }
+        }
+    }
+}

Propchange: tuscany/maven-plugins/trunk/maven-zip-plugin/src/main/java/org/apache/tuscany/maven/zip/ZipMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/maven-plugins/trunk/maven-zip-plugin/src/main/java/org/apache/tuscany/maven/zip/ZipMojo.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/maven-plugins/trunk/maven-zip-plugin/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/tuscany/maven-plugins/trunk/maven-zip-plugin/src/main/resources/META-INF/plexus/components.xml?rev=762046&view=auto
==============================================================================
--- tuscany/maven-plugins/trunk/maven-zip-plugin/src/main/resources/META-INF/plexus/components.xml (added)
+++ tuscany/maven-plugins/trunk/maven-zip-plugin/src/main/resources/META-INF/plexus/components.xml Sun Apr  5 06:48:25 2009
@@ -0,0 +1,41 @@
+<?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.
+-->
+<component-set>
+  <components>
+    <component>
+      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
+      <role-hint>zip</role-hint>
+      <implementation>
+        org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
+      </implementation>
+      <configuration>
+        <phases>
+          <process-resources>
+            org.apache.maven.plugins:maven-resources-plugin:resources
+          </process-resources>
+          <compile>
+            org.apache.maven.plugins:maven-compiler-plugin:compile
+          </compile>
+          <package>org.apache.tuscany.maven.plugins:maven-zip-plugin:zip</package>
+        </phases>
+      </configuration>
+    </component>
+  </components>
+</component-set>

Propchange: tuscany/maven-plugins/trunk/maven-zip-plugin/src/main/resources/META-INF/plexus/components.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: tuscany/maven-plugins/trunk/maven-zip-plugin/src/main/resources/META-INF/plexus/components.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml