jira-importer commented on issue #107: URL: https://github.com/apache/maven-war-plugin/issues/107#issuecomment-2967842934
**[Jonathan Ramsey](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=jonathan.ramsey)** commented 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 in between. The change in version might occur without you knowing if you hadn't explicitly set the version of maven-war-plugin in your pom.xml. The first war goal is executed prior to the release of 2.1-alpha-2, and the second war goal is executed after 2.1-alpha-2 was released. The problem is caused because a dependenciesInfo variable was added to org.apache.maven.plugin.war.util.WebappStructure in [r606628](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), 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. 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] ------------------------------------------------------------------------ -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org