You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2008/09/03 15:52:17 UTC

svn commit: r691615 - in /maven/plugins/trunk/maven-ant-plugin/src: it/webapp-it/ it/webapp-it/src/main/java/ it/webapp-it/src/main/java/org/ it/webapp-it/src/main/resources/ it/webapp-it/src/main/webapp/WEB-INF/ main/java/org/apache/maven/plugin/ant/

Author: bentmann
Date: Wed Sep  3 06:52:16 2008
New Revision: 691615

URL: http://svn.apache.org/viewvc?rev=691615&view=rev
Log:
[MANT-45] basedir attribute of <war> task of package target in generated Ant build causes files to be archived twice

Added:
    maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/java/
    maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/java/org/
    maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/java/org/MyClass.java   (with props)
    maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/resources/test.properties   (with props)
    maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/webapp/WEB-INF/test.txt   (with props)
Modified:
    maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/pom.xml
    maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/verify.bsh
    maven/plugins/trunk/maven-ant-plugin/src/main/java/org/apache/maven/plugin/ant/AntBuildWriterUtil.java

Modified: maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/pom.xml?rev=691615&r1=691614&r2=691615&view=diff
==============================================================================
--- maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/pom.xml (original)
+++ maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/pom.xml Wed Sep  3 06:52:16 2008
@@ -38,6 +38,10 @@
     </dependency>
   </dependencies>
 
+  <properties>
+    <build.compiler>extJavac</build.compiler>
+  </properties>
+
   <build>
     <finalName>ant-webapp-test</finalName>
     <plugins>

Added: maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/java/org/MyClass.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/java/org/MyClass.java?rev=691615&view=auto
==============================================================================
--- maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/java/org/MyClass.java (added)
+++ maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/java/org/MyClass.java Wed Sep  3 06:52:16 2008
@@ -0,0 +1,5 @@
+package org;
+
+public class MyClass
+{
+}

Propchange: maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/java/org/MyClass.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/java/org/MyClass.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/resources/test.properties
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/resources/test.properties?rev=691615&view=auto
==============================================================================
--- maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/resources/test.properties (added)
+++ maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/resources/test.properties Wed Sep  3 06:52:16 2008
@@ -0,0 +1 @@
+key=value
\ No newline at end of file

Propchange: maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/resources/test.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/resources/test.properties
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/webapp/WEB-INF/test.txt
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/webapp/WEB-INF/test.txt?rev=691615&view=auto
==============================================================================
--- maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/webapp/WEB-INF/test.txt (added)
+++ maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/webapp/WEB-INF/test.txt Wed Sep  3 06:52:16 2008
@@ -0,0 +1 @@
+Test
\ No newline at end of file

Propchange: maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/webapp/WEB-INF/test.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/src/main/webapp/WEB-INF/test.txt
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/verify.bsh?rev=691615&r1=691614&r2=691615&view=diff
==============================================================================
--- maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/verify.bsh (original)
+++ maven/plugins/trunk/maven-ant-plugin/src/it/webapp-it/verify.bsh Wed Sep  3 06:52:16 2008
@@ -1,32 +1,99 @@
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
+import java.util.jar.*;
 
 import org.codehaus.plexus.util.IOUtil;
 
-File build;
-File mavenBuild;
-File mavenBuildProperties;
+try
+{
+  File build;
+  File mavenBuild;
+  File mavenBuildProperties;
+  
+  // Webapp project
+  
+  build = new File( basedir, "build.xml" );
+  if ( build.isDirectory() || !build.exists() )
+  {
+    System.err.println( "The file '" + build.getAbsolutePath() + "' is a directory or doesn't exist." );
+    return false;
+  }
+  mavenBuild = new File( basedir, "maven-build.xml" );
+  if ( mavenBuild.isDirectory() || !mavenBuild.exists() )
+  {
+    System.err.println( "The file '" + mavenBuild.getAbsolutePath() + "' is a directory or doesn't exist." );
+    return false;
+  }
+  mavenBuildProperties = new File( basedir, "maven-build.properties" );
+  if ( mavenBuildProperties.isDirectory() || !mavenBuildProperties.exists() )
+  {
+    System.err.println( "The file '" + mavenBuildProperties.getAbsolutePath() + "' is a directory or doesn't exist." );
+    return false;
+  }
+  
+  warFile = new File( basedir, "target/ant-webapp-test.war" );
+  System.out.println( "Checking for existence of WAR file: " + warFile );
+  if ( !warFile.isFile() )
+  {
+    System.err.println( "FAILED!" );
+    return false;
+  }
+  
+  JarFile war = new JarFile( warFile );
 
-// Webapp project
+  String[] expected = {
+    "index.jsp",
+    "WEB-INF/web.xml",
+    "WEB-INF/test.txt",
+    "WEB-INF/classes/test.properties",
+    "WEB-INF/classes/org/MyClass.class",
+  };
+  for ( String entry : expected )
+  {
+    System.out.println( "Checking for existence of WAR file entry: " + entry );
+    if ( war.getEntry( entry ) == null )
+    {
+      System.err.println( "FAILED!" );
+      return false;
+    }
 
-build = new File( basedir, "build.xml" );
-if ( build.isDirectory() || !build.exists() )
-{
-  System.err.println( "The file '" + build.getAbsolutePath() + "' is a directory or doesn't exist." );
-  return false;
-}
-mavenBuild = new File( basedir, "maven-build.xml" );
-if ( mavenBuild.isDirectory() || !mavenBuild.exists() )
-{
-  System.err.println( "The file '" + mavenBuild.getAbsolutePath() + "' is a directory or doesn't exist." );
-  return false;
+    System.out.println( "Checking for uniqueness of WAR file entry: " + entry );
+    int count = 0;
+    for ( Enumeration en = war.entries(); en.hasMoreElements(); )
+    {
+      JarEntry je = (JarEntry) en.nextElement();
+      if ( entry.equals( je.getName() ) )
+      {
+        count++;
+      }
+    }
+    if ( count != 1 )
+    {
+      System.err.println( "FAILED! " + count );
+      return false;
+    }
+  }
+  
+  String[] unexpected = {
+    "org/MyClass.class",
+  };
+  for ( String entry : unexpected )
+  {
+    System.out.println( "Checking for absence of WAR file entry: " + entry );
+    if ( war.getEntry( entry ) != null )
+    {
+      System.err.println( "FAILED!" );
+      return false;
+    }
+  }
+
+  war.close();
 }
-mavenBuildProperties = new File( basedir, "maven-build.properties" );
-if ( mavenBuildProperties.isDirectory() || !mavenBuildProperties.exists() )
+catch( Throwable t )
 {
-  System.err.println( "The file '" + mavenBuildProperties.getAbsolutePath() + "' is a directory or doesn't exist." );
-  return false;
+    t.printStackTrace();
+    return false;
 }
 
 return true;

Modified: maven/plugins/trunk/maven-ant-plugin/src/main/java/org/apache/maven/plugin/ant/AntBuildWriterUtil.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ant-plugin/src/main/java/org/apache/maven/plugin/ant/AntBuildWriterUtil.java?rev=691615&r1=691614&r2=691615&view=diff
==============================================================================
--- maven/plugins/trunk/maven-ant-plugin/src/main/java/org/apache/maven/plugin/ant/AntBuildWriterUtil.java (original)
+++ maven/plugins/trunk/maven-ant-plugin/src/main/java/org/apache/maven/plugin/ant/AntBuildWriterUtil.java Wed Sep  3 06:52:16 2008
@@ -495,22 +495,20 @@
     public static void writeWarTask( XMLWriter writer, MavenProject project, File localRepository )
         throws IOException
     {
+        String webXml =
+            getMavenWarPluginBasicOption( project, "webXml", "${basedir}/src/main/webapp/WEB-INF/web.xml" );
+        if ( webXml.startsWith( "${basedir}/" ) )
+        {
+            webXml = webXml.substring( "${basedir}/".length() );
+        }
+        
         writeCopyLib( writer, project, "${maven.build.dir}/${maven.build.finalName}/WEB-INF/lib" );
 
         writer.startElement( "war" );
         writer.addAttribute( "destfile", "${maven.build.dir}/${maven.build.finalName}.war" );
-        addWrapAttribute( writer, "war", "basedir", "${maven.build.outputDir}", 3 );
         addWrapAttribute( writer, "war", "compress",
                           getMavenWarPluginBasicOption( project, "archive//compress", "true" ), 3 );
-        if ( getMavenWarPluginBasicOption( project, "webXml", null ) != null )
-        {
-            addWrapAttribute( writer, "war", "webxml", getMavenWarPluginBasicOption( project, "webXml", null ), 3 );
-        }
-        else
-        {
-            // Default
-            addWrapAttribute( writer, "war", "webxml", "${basedir}/src/main/webapp/WEB-INF/web.xml", 3 );
-        }
+        addWrapAttribute( writer, "war", "webxml", webXml, 3 );
         if ( getMavenWarPluginBasicOption( project, "manifestFile", null ) != null )
         {
             addWrapAttribute( writer, "war", "manifest", getMavenWarPluginBasicOption( project, "manifestFile", null ),
@@ -522,12 +520,9 @@
         writer.startElement( "classes" );
         writer.addAttribute( "dir", "${maven.build.outputDir}" );
         writer.endElement(); // classes
-        writer.startElement( "webinf" );
-        writer.addAttribute( "dir", "${basedir}/src/main/webapp/WEB-INF" );
-        addWrapAttribute( writer, "webinf", "excludes", "web.xml", 4 );
-        writer.endElement(); // webinf
         writer.startElement( "fileset" );
-        writer.addAttribute( "dir", "${basedir}/src/main/webapp" );
+        writer.addAttribute( "dir", "src/main/webapp" );
+        addWrapAttribute( writer, "fileset", "excludes", "WEB-INF/web.xml", 4 );
         writer.endElement(); // fileset
         writer.endElement(); // war
     }