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 )
{