[ http://jira.codehaus.org/browse/MWAR-169?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=147323#action_147323 ]
Jonathan Ramsey commented on MWAR-169: -------------------------------------- This problem occurs when you run any of the goals on version 2.1-alpha-2 of the maven-war-plugin after running any of the goals on version 2.1-alpha-1, without a clean of the project between. The change in version might occur without you knowing if you hadn't explictely set the version of maven-war-plugin in your pom.xml. Your first run of a war:goal occur prior to the release of 2.1-alpha-2, and your second run of a war:goal your first goal was run before 2.1-alpha-2 was released, and your second goal was run after 2.1-alpha-2 was released and you hadn't explictely set the version of maven-war-plugin in your pom.xml. The problem is caused because a dependenciesInfo variable was added to org.apache.maven.plugin.war.util.WebappStructure in r606628, but no defensive initialization of the variable was added to the readResolve() method. r606628 was released in maven-war-plugin version 2.1-alpha-2. http://svn.apache.org/viewvc/maven/plugins/tags/maven-war-plugin-2.1-alpha-2/src/main/java/org/apache/maven/plugin/war/util/WebappStructure.java?view=diff&r1=606627&r2=606628 When one of the war goals is executed, maven-war-plugin 2.1-alpha-1 uses XStream to serialize a WebappStructure object to target\war\work\webapp-cache.xml. Provided you haven't cleaned your project, when you next run one of the war goals the maven-war-plugin 2.1-alpha-2 deserializes the WebappStructure object from target\war\work\webapp-cache.xml. The dependenciesInfo variable is not initialized with a value because the webapp-cache.xml doesn't contain a <dependenciesInfo> element and the readResolve() method doesn't initialize the variable defensively. When the WebappStructure.getDependencies() method is invoked, dependenciesInfo is dereferenced which triggers a NullPointerException. Steps to reproduce: 1. mvn archetype:create -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.0 -DgroupId=test -DartifactId=webapp 2. cd webapp 3. Add this to <build> in pom.xml. <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.1-alpha-1</version> </plugin> </plugins> 4. mvn package 5. Change version from 2.1-alpha-1 to 2.1-alpha-2 6. mvn package You reproduce the error: [INFO] Scanning for projects... [INFO] ---------------------------------------------------------------------------- [INFO] Building webapp Maven Webapp [INFO] task-segment: [package] [INFO] ---------------------------------------------------------------------------- [INFO] [resources:resources] [INFO] Using default encoding to copy filtered resources. [INFO] [compiler:compile] [INFO] No sources to compile [INFO] [resources:testResources] [INFO] Using default encoding to copy filtered resources. [INFO] [compiler:testCompile] [INFO] No sources to compile [INFO] [surefire:test] [INFO] No tests to run. [INFO] [war:war] [INFO] Packaging webapp [INFO] Assembling webapp[webapp] in [C:\WebTeam\projects\webapp\target\webapp] [INFO] ------------------------------------------------------------------------ [ERROR] FATAL ERROR [INFO] ------------------------------------------------------------------------ [INFO] null [INFO] ------------------------------------------------------------------------ [INFO] Trace java.lang.NullPointerException at org.apache.maven.plugin.war.util.WebappStructure.getDependencies(WebappStructure.java:109) at org.apache.maven.plugin.war.util.WebappStructure.analyseDependencies(WebappStructure.java:288) at org.apache.maven.plugin.war.packaging.DependenciesAnalysisPackagingTask.performPackaging(DependenciesAnalysisPackagingTask.java:46) at org.apache.maven.plugin.war.AbstractWarMojo.buildWebapp(AbstractWarMojo.java:439) at org.apache.maven.plugin.war.AbstractWarMojo.buildExplodedWebapp(AbstractWarMojo.java:375) at org.apache.maven.plugin.war.WarMojo.performPackaging(WarMojo.java:181) at org.apache.maven.plugin.war.WarMojo.execute(WarMojo.java:143) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:443) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:539) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:480) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:459) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:311) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:278) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:143) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:334) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:125) at org.apache.maven.cli.MavenCli.main(MavenCli.java:280) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3 seconds [INFO] Finished at: Mon Sep 08 14:14:58 BST 2008 [INFO] Final Memory: 8M/63M [INFO] ------------------------------------------------------------------------ > NPE during packaging. > --------------------- > > Key: MWAR-169 > URL: http://jira.codehaus.org/browse/MWAR-169 > Project: Maven 2.x War Plugin > Issue Type: Bug > Affects Versions: 2.1-alpha-2 > Reporter: Maarten Billemont > > The following NPE happens when I run maven from the parent in a multi-module > project; though it does not occur when I run mvn clean install from within > the module itself. > [INFO] [war:war] > [INFO] Packaging webapp > [INFO] Assembling webapp[safe-online-startup-runtime] in > [/Users/mbillemo/Documents/workspace/safe-online/safe-online-startup-runtime/target/safe-online-startup- > runtime-1.1-SNAPSHOT] > [INFO] > ------------------------------------------------------------------------ > [ERROR] FATAL ERROR > [INFO] > ------------------------------------------------------------------------ > [INFO] null > [INFO] > ------------------------------------------------------------------------ > [INFO] Trace > java.lang.NullPointerException > at > org.apache.maven.plugin.war.util.WebappStructure.getDependencies(WebappStructure.java:109) > at > org.apache.maven.plugin.war.util.WebappStructure.analyseDependencies(WebappStructure.java:288) > at > org.apache.maven.plugin.war.packaging.DependenciesAnalysisPackagingTask.performPackaging(DependenciesAnalysisPackagingTask.java:46) > at > org.apache.maven.plugin.war.AbstractWarMojo.buildWebapp(AbstractWarMojo.java:439) > at > org.apache.maven.plugin.war.AbstractWarMojo.buildExplodedWebapp(AbstractWarMojo.java:375) > at > org.apache.maven.plugin.war.WarMojo.performPackaging(WarMojo.java:181) > at org.apache.maven.plugin.war.WarMojo.execute(WarMojo.java:143) at > org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:451) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:558) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:499) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:478) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:330) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:291) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:142) > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336) > at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129) at > org.apache.maven.cli.MavenCli.main(MavenCli.java:287) at > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) > at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) > at > org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) > at org.codehaus.classworlds.Launcher.main(Launcher.java:375) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira