You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by de...@apache.org on 2012/01/24 00:03:54 UTC

svn commit: r1235053 - in /maven/plugins/trunk/maven-war-plugin: ./ src/it/manifest-content/ src/it/manifest-content/src/ src/it/manifest-content/src/main/ src/it/manifest-content/src/main/webapp/ src/main/java/org/apache/maven/plugin/war/ src/main/jav...

Author: dennisl
Date: Mon Jan 23 23:03:53 2012
New Revision: 1235053

URL: http://svn.apache.org/viewvc?rev=1235053&view=rev
Log:
[MWAR-273] Add Maven version used to Created-By entry in manifest
Submitted by: Anders Hammar
Reviewed by: Dennis Lundberg

Added:
    maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/
    maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/pom.xml   (with props)
    maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/src/
    maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/src/main/
    maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/src/main/webapp/
    maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/src/main/webapp/index.jsp   (with props)
    maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/verify.bsh   (with props)
Modified:
    maven/plugins/trunk/maven-war-plugin/pom.xml
    maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java
    maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/WarManifestMojo.java
    maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/WarMojo.java
    maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java
    maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java
    maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/util/ClassesPackager.java

Modified: maven/plugins/trunk/maven-war-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/pom.xml?rev=1235053&r1=1235052&r2=1235053&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-war-plugin/pom.xml Mon Jan 23 23:03:53 2012
@@ -51,7 +51,7 @@ under the License.
   </issueManagement>
 
   <properties>
-    <mavenArchiverVersion>2.4.2</mavenArchiverVersion>
+    <mavenArchiverVersion>2.5-SNAPSHOT</mavenArchiverVersion>
     <mavenFilteringVersion>1.0-beta-2</mavenFilteringVersion>
     <mavenVersion>2.0.6</mavenVersion>
   </properties>

Added: maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/pom.xml?rev=1235053&view=auto
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/pom.xml (added)
+++ maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/pom.xml Mon Jan 23 23:03:53 2012
@@ -0,0 +1,50 @@
+<!--
+  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.
+-->
+
+<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>test</groupId>
+  <artifactId>manifest-content</artifactId>
+  <packaging>war</packaging>
+  <version>1.0-SNAPSHOT</version>
+  <name>Maven War Manifest Content Test</name>
+  <organization>
+    <name>war plugin it</name>
+  </organization>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-war-plugin</artifactId>
+        <version>@pom.version@</version>
+        <configuration>
+          <failOnMissingWebXml>false</failOnMissingWebXml>
+          <archive>
+            <forced>true</forced>
+            <manifest>
+              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+            </manifest>
+          </archive>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file

Propchange: maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/src/main/webapp/index.jsp
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/src/main/webapp/index.jsp?rev=1235053&view=auto
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/src/main/webapp/index.jsp (added)
+++ maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/src/main/webapp/index.jsp Mon Jan 23 23:03:53 2012
@@ -0,0 +1,20 @@
+<%--
+  ~ 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.
+  --%>
+
+<% response.sendRedirect( request.getContextPath() + "/groupSummary.action" ); %>

Propchange: maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/src/main/webapp/index.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/verify.bsh?rev=1235053&view=auto
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/verify.bsh (added)
+++ maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/verify.bsh Mon Jan 23 23:03:53 2012
@@ -0,0 +1,109 @@
+
+/*
+ * 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.*;
+import java.util.*;
+import java.util.jar.*;
+import org.codehaus.plexus.util.*;
+
+boolean result = true;
+
+try
+{
+    File target = new File( basedir, "target" );
+    if ( !target.exists() || !target.isDirectory() )
+    {
+        System.err.println( "target file is missing or not a directory." );
+        return false;
+    }
+
+    File artifact = new File( target, "manifest-content-1.0-SNAPSHOT.war" );
+    if ( !artifact.exists() || artifact.isDirectory() )
+    {
+        System.err.println( "artifact file is missing or a directory." );
+        return false;
+    }
+
+    JarFile jar = new JarFile( artifact );
+
+    Attributes manifest = jar.getManifest().getMainAttributes();
+
+    if ( !manifest.getValue( new Attributes.Name( "Created-By" ) ).startsWith( "Apache Maven" ) )
+    {
+        System.err.println( "Created-By not equals Apache Maven" );
+        return false;
+    }
+
+    if ( !"Maven War Manifest Content Test".equals( manifest.get( Attributes.Name.SPECIFICATION_TITLE ) ) )
+    {
+        System.err.println( "Incorrect '" + Attributes.Name.SPECIFICATION_TITLE.toString() + "' manifest entry: " +
+            manifest.get( Attributes.Name.SPECIFICATION_TITLE ) );
+        return false;
+    }
+
+    if ( !"1.0-SNAPSHOT".equals( manifest.get( Attributes.Name.SPECIFICATION_VERSION ) ) )
+    {
+        System.err.println( "Incorrect '" + Attributes.Name.SPECIFICATION_VERSION.toString() + "' manifest entry: " +
+            manifest.get( Attributes.Name.SPECIFICATION_VERSION ) );
+        return false;
+    }
+
+    if ( !"war plugin it".equals( manifest.get( Attributes.Name.SPECIFICATION_VENDOR ) ) )
+    {
+        System.err.println( "Incorrect '" + Attributes.Name.SPECIFICATION_VENDOR.toString() + "' manifest entry: " +
+            manifest.get( Attributes.Name.SPECIFICATION_VENDOR ) );
+        return false;
+    }
+
+    if ( !"Maven War Manifest Content Test".equals( manifest.get( Attributes.Name.IMPLEMENTATION_TITLE ) ) )
+    {
+        System.err.println( "Incorrect '" + Attributes.Name.IMPLEMENTATION_TITLE.toString() + "' manifest entry: " +
+            manifest.get( Attributes.Name.IMPLEMENTATION_TITLE ) );
+        return false;
+    }
+
+    if ( !"1.0-SNAPSHOT".equals( manifest.get( Attributes.Name.IMPLEMENTATION_VERSION ) ) )
+    {
+        System.err.println( "Incorrect '" + Attributes.Name.IMPLEMENTATION_VERSION.toString() + "' manifest entry: " +
+            manifest.get( Attributes.Name.IMPLEMENTATION_VERSION ) );
+        return false;
+    }
+
+    if ( !"test".equals( manifest.get( Attributes.Name.IMPLEMENTATION_VENDOR_ID ) ) )
+    {
+        System.err.println( "Incorrect '" + Attributes.Name.IMPLEMENTATION_VENDOR_ID.toString() + "' manifest entry: " +
+            manifest.get( Attributes.Name.IMPLEMENTATION_VENDOR_ID ) );
+        return false;
+    }
+
+    if ( !"war plugin it".equals( manifest.get( Attributes.Name.IMPLEMENTATION_VENDOR ) ) )
+    {
+        System.err.println( "Incorrect '" + Attributes.Name.IMPLEMENTATION_VENDOR.toString() + "' manifest entry: " +
+            manifest.get( Attributes.Name.IMPLEMENTATION_VENDOR ) );
+        return false;
+    }
+}
+catch( Throwable e )
+{
+    e.printStackTrace();
+    result = false;
+}
+
+return result;

Propchange: maven/plugins/trunk/maven-war-plugin/src/it/manifest-content/verify.bsh
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java?rev=1235053&r1=1235052&r2=1235053&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java Mon Jan 23 23:03:53 2012
@@ -687,6 +687,10 @@ public abstract class AbstractWarMojo
             return this.artifactFactory;
         }
 
+        public MavenSession getSession()
+        {
+            return session;
+        }
     }
 
     public MavenProject getProject()
@@ -889,4 +893,9 @@ public abstract class AbstractWarMojo
     {
         this.artifactFactory = artifactFactory;
     }
+    
+    protected MavenSession getSession()
+    {
+        return this.session;
+    }
 }

Modified: maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/WarManifestMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/WarManifestMojo.java?rev=1235053&r1=1235052&r2=1235053&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/WarManifestMojo.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/WarManifestMojo.java Mon Jan 23 23:03:53 2012
@@ -75,7 +75,7 @@ public class WarManifestMojo
         PrintWriter printWriter = null;
         try
         {
-            Manifest mf = ma.getManifest( getProject(), getArchive() );
+            Manifest mf = ma.getManifest( getSession(), getProject(), getArchive() );
             printWriter = new PrintWriter( WriterFactory.newWriter( manifestFile, WriterFactory.UTF_8 ) );
             mf.write( printWriter );
         }

Modified: maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/WarMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/WarMojo.java?rev=1235053&r1=1235052&r2=1235053&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/WarMojo.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/WarMojo.java Mon Jan 23 23:03:53 2012
@@ -240,7 +240,7 @@ public class WarMojo
         }
 
         // create archive
-        archiver.createArchive( getProject(), getArchive() );
+        archiver.createArchive( getSession(), getProject(), getArchive() );
 
         // create the classes to be attached if necessary
         if ( isAttachClasses() )
@@ -259,8 +259,8 @@ public class WarMojo
                 if ( classesDirectory.exists() )
                 {
                     getLog().info( "Packaging classes" );
-                    packager.packageClasses( classesDirectory, getTargetClassesFile(), getJarArchiver(), getProject(),
-                                             getArchive() );
+                    packager.packageClasses( classesDirectory, getTargetClassesFile(), getJarArchiver(), getSession(),
+                                             getProject(), getArchive() );
                     projectHelper.attachArtifact( getProject(), "jar", getClassesClassifier(), getTargetClassesFile() );
                 }
             }

Modified: maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java?rev=1235053&r1=1235052&r2=1235053&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java Mon Jan 23 23:03:53 2012
@@ -110,7 +110,7 @@ public class ClassesPackagingTask
             final File jarFile = new File( libDirectory, archiveName );
             final ClassesPackager packager = new ClassesPackager();
             packager.packageClasses( context.getClassesDirectory(), jarFile, context.getJarArchiver(),
-                                     project, context.getArchive() );
+                                     context.getSession(), project, context.getArchive() );
         }
         else
         {

Modified: maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java?rev=1235053&r1=1235052&r2=1235053&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java Mon Jan 23 23:03:53 2012
@@ -24,6 +24,7 @@ import java.util.List;
 
 import org.apache.maven.archiver.MavenArchiveConfiguration;
 import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.plugin.war.util.WebappStructure;
 import org.apache.maven.project.MavenProject;
@@ -186,4 +187,12 @@ public interface WarPackagingContext
     boolean isFilteringDeploymentDescriptors();
     
     ArtifactFactory getArtifactFactory();
+
+    /**
+     * Returns the Maven session.
+     *
+     * @return the Maven session
+     * @since 2.2
+     */
+    MavenSession getSession();
 }

Modified: maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/util/ClassesPackager.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/util/ClassesPackager.java?rev=1235053&r1=1235052&r2=1235053&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/util/ClassesPackager.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/util/ClassesPackager.java Mon Jan 23 23:03:53 2012
@@ -22,6 +22,7 @@ package org.apache.maven.plugin.war.util
 import org.apache.maven.archiver.MavenArchiveConfiguration;
 import org.apache.maven.archiver.MavenArchiver;
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.war.packaging.AbstractWarPackagingTask;
 import org.apache.maven.project.MavenProject;
@@ -55,12 +56,13 @@ public class ClassesPackager
      * @param classesDirectory     the classes directory
      * @param targetFile           the target file
      * @param jarArchiver          the jar archiver to use
+     * @param session              the current session
      * @param project              the related project
      * @param archiveConfiguration the archive configuration to use
      * @throws MojoExecutionException if an error occurred while creating the archive
      */
-    public void packageClasses( File classesDirectory, File targetFile, JarArchiver jarArchiver, MavenProject project,
-                                MavenArchiveConfiguration archiveConfiguration )
+    public void packageClasses( File classesDirectory, File targetFile, JarArchiver jarArchiver, MavenSession session,
+                                MavenProject project, MavenArchiveConfiguration archiveConfiguration )
         throws MojoExecutionException
     {
 
@@ -70,7 +72,7 @@ public class ClassesPackager
             archiver.setArchiver( jarArchiver );
             archiver.setOutputFile( targetFile );
             archiver.getArchiver().addDirectory( classesDirectory );
-            archiver.createArchive( project, archiveConfiguration );
+            archiver.createArchive( session, project, archiveConfiguration );
         }
         catch ( ArchiverException e )
         {