Author: khmarbaise
Date: Thu Jan 8 18:58:02 2015
New Revision: 1650354
URL: http://svn.apache.org/r1650354
Log:
[MWAR-167] Final manifest not written to exploded location
Applied patch with slight modifications.
Added:
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/invoker.properties
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/pom.xml
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/src/
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/src/main/
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/src/main/resources/
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/src/main/resources/MANIFEST.MF
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/src/main/webapp/
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/verify.bsh
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/CopyUserManifestTask.java
Modified:
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java
Added: maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/invoker.properties
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/invoker.properties?rev=1650354&view=auto
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/invoker.properties
(added)
+++ maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/invoker.properties Thu
Jan 8 18:58:02 2015
@@ -0,0 +1,18 @@
+# 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.
+
+invoker.goals=clean war:exploded
Added: maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/pom.xml
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/pom.xml?rev=1650354&view=auto
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/pom.xml (added)
+++ maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/pom.xml Thu Jan 8
18:58:02 2015
@@ -0,0 +1,49 @@
+<?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.
+-->
+<project 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'
xmlns='http://maven.apache.org/POM/4.0.0'>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>testwar</groupId>
+ <artifactId>MWAR-167</artifactId>
+ <packaging>war</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <name>MWAR-167 Maven Webapp</name>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>@project.version@</version>
+ <configuration>
+ <archive>
+ <manifestFile>src/main/resources/MANIFEST.MF</manifestFile>
+ </archive>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added:
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/src/main/resources/MANIFEST.MF
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/src/main/resources/MANIFEST.MF?rev=1650354&view=auto
==============================================================================
---
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/src/main/resources/MANIFEST.MF
(added)
+++
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/src/main/resources/MANIFEST.MF
Thu Jan 8 18:58:02 2015
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Bundle-Name: Dummy Bundle
+Bundle-SymbolicName: dummy.bundle
+Bundle-ManifestVersion: 2
+Bundle-Version: 1.0.0.SNAPSHOT
\ No newline at end of file
Added: maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/verify.bsh
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/verify.bsh?rev=1650354&view=auto
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/verify.bsh (added)
+++ maven/plugins/trunk/maven-war-plugin/src/it/MWAR-167/verify.bsh Thu Jan 8
18:58:02 2015
@@ -0,0 +1,74 @@
+
+/*
+ * 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 org.codehaus.plexus.util.*;
+
+boolean result = true;
+
+try
+{
+ File manifest = new File( basedir,
"target/MWAR-167-1.0-SNAPSHOT/META-INF/MANIFEST.MF" );
+ if ( !manifest.exists() || !manifest.isFile() )
+ {
+ System.err.println( "Manifest is missing!");
+ return false;
+ }
+
+
+ FileInputStream fis = new FileInputStream ( manifest );
+ String manifestContent = IOUtil.toString ( fis );
+
+ int indexOf = manifestContent.indexOf("Manifest-Version: 1.0" );
+ if ( indexOf < 0)
+ {
+ System.err.println( "Manifest-Version header not found" );
+ return false;
+ }
+
+ indexOf = manifestContent.indexOf("Bundle-Name: Dummy Bundle" );
+ if ( indexOf < 0)
+ {
+ System.err.println( "Bundle-Name header not found" );
+ return false;
+ }
+
+ indexOf = manifestContent.indexOf("Bundle-SymbolicName: dummy.bundle" );
+ if ( indexOf < 0)
+ {
+ System.err.println( "Bundle-SymbolicName: 2" );
+ return false;
+ }
+
+ indexOf = manifestContent.indexOf("Bundle-Version: 1.0.0.SNAPSHOT" );
+ if ( indexOf < 0)
+ {
+ System.err.println( "Bundle-Version header not found" );
+ return false;
+ }
+
+}
+catch( Throwable e )
+{
+ e.printStackTrace();
+ result = false;
+}
+
+return result;
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=1650354&r1=1650353&r2=1650354&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
Thu Jan 8 18:58:02 2015
@@ -35,6 +35,7 @@ import org.apache.maven.plugin.MojoExecu
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.plugin.war.overlay.OverlayManager;
+import org.apache.maven.plugin.war.packaging.CopyUserManifestTask;
import org.apache.maven.plugin.war.packaging.DependenciesAnalysisPackagingTask;
import org.apache.maven.plugin.war.packaging.OverlayPackagingTask;
import
org.apache.maven.plugin.war.packaging.SaveWebappStructurePostPackagingTask;
@@ -457,7 +458,8 @@ public abstract class AbstractWarMojo
getLog().info( "Assembling webapp [" + mavenProject.getArtifactId() +
"] in [" + webapplicationDirectory + "]" );
final OverlayManager overlayManager =
- new OverlayManager( overlays, mavenProject, dependentWarIncludes,
dependentWarExcludes, currentProjectOverlay );
+ new OverlayManager( overlays, mavenProject, dependentWarIncludes,
dependentWarExcludes,
+ currentProjectOverlay );
final List<WarPackagingTask> packagingTasks = getPackagingTasks(
overlayManager );
// CHECKSTYLE_ON: LineLength
List<FileUtils.FilterWrapper> defaultFilterWrappers;
@@ -517,9 +519,13 @@ public abstract class AbstractWarMojo
throws MojoExecutionException
{
final List<WarPackagingTask> packagingTasks = new
ArrayList<WarPackagingTask>();
+
+ packagingTasks.add( new CopyUserManifestTask() );
+
if ( useCache )
{
packagingTasks.add( new DependenciesAnalysisPackagingTask() );
+
}
final List<Overlay> resolvedOverlays = overlayManager.getOverlays();
Added:
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/CopyUserManifestTask.java
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/CopyUserManifestTask.java?rev=1650354&view=auto
==============================================================================
---
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/CopyUserManifestTask.java
(added)
+++
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/CopyUserManifestTask.java
Thu Jan 8 18:58:02 2015
@@ -0,0 +1,77 @@
+package org.apache.maven.plugin.war.packaging;
+
+/*
+ * 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.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugin.logging.SystemStreamLog;
+
+/**
+ * @author Haikal Saadh
+ *
+ */
+public class CopyUserManifestTask
+ extends AbstractWarPackagingTask
+{
+
+ /** Instance logger */
+ private Log log;
+
+ public Log getLog()
+ {
+ if ( log == null )
+ {
+ log = new SystemStreamLog();
+ }
+ return log;
+ }
+
+ public void setLog( Log log )
+ {
+ this.log = log;
+ }
+
+ public void performPackaging( WarPackagingContext context )
+ throws MojoExecutionException, MojoFailureException
+ {
+ File userManifest = context.getArchive().getManifestFile();
+ if ( userManifest != null )
+ {
+
+ try
+ {
+ getLog().info( "Copying manifest..." );
+ File metainfDir = new File( context.getWebappDirectory(),
META_INF_PATH );
+ copyFile( context, userManifest, new File( metainfDir,
"MANIFEST.MF" ), "META-INF/MANIFEST.MF", true );
+
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "Error copying user
manifest", e );
+ }
+ }
+
+ }
+
+}