views:

880

answers:

3

Hi all My (simple) war project builds fine using mvn:package at the command line, but fails to build in eclipse using maven via the sonatype plugin. The error I'm getting is:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.1-alpha-1:war (default-war) on project shoploops_webapp: Execution default-war of goal org.apache.maven.plugins:maven-war-plugin:2.1-alpha-1:war failed: dependenciesInfo : dependenciesInfo ---- Debugging information ---- message : dependenciesInfo : dependenciesInfo cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException cause-message : dependenciesInfo : dependenciesInfo class : org.apache.maven.plugin.war.util.WebappStructure required-type : org.apache.maven.plugin.war.util.WebappStructure path : /webapp-structure/dependenciesInfo line number : 14

I really have two questions 1) How can I fix this error? 2) Why does mvn:package work fine at the command line, but not through the plugin? What is the difference between them in how they work, such that errors like this can occur?

Many thanks!

Edit: the stack trace from running it in debug mode:

Caused by: com.thoughtworks.xstream.converters.ConversionException: dependenciesInfo : dependenciesInfo ---- Debugging information ---- message : dependenciesInfo : dependenciesInfo cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException cause-message : dependenciesInfo : dependenciesInfo class : org.apache.maven.plugin.war.util.WebappStructure required-type : org.apache.maven.plugin.war.util.WebappStructure path : /webapp-structure/dependenciesInfo

line number : 14

at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:63)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:45)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:46)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:117)
at com.thoughtworks.xstream.core.ReferenceByXPathMarshallingStrategy.unmarshal(ReferenceByXPathMarshallingStrategy.java:29)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:846)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:833)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:781)
at org.apache.maven.plugin.war.util.WebappStructureSerializer.fromXml(WebappStructureSerializer.java:48)
at org.apache.maven.plugin.war.AbstractWarMojo.buildWebapp(AbstractWarMojo.java:346)
at org.apache.maven.plugin.war.AbstractWarMojo.buildExplodedWebapp(AbstractWarMojo.java:317)
at org.apache.maven.plugin.war.WarMojo.performPackaging(WarMojo.java:166)
at org.apache.maven.plugin.war.WarMojo.execute(WarMojo.java:130)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:105)
... 15 more

Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException: dependenciesInfo : dependenciesInfo at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:49) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26) at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:76) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26) at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:60) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26) at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:76) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26) at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:34) at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.determineType(AbstractReflectionConverter.java:296) at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:178) at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:125) at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:56) ... 28 more

+2  A: 

Why does mvn:package work fine at the command line, but not through the plugin? What is the difference between them in how they work, such that errors like this can occur?

The short version is that m2eclipse does not use the same version that you use on the command line unless you told him to do so (and that would be my recommendation). If you wonder, m2eclipse uses embedded Maven 3 (Maven Embedder 3.0.0.200912160759).

How can I fix this error?

Actually, the problem is logged in http://jira.codehaus.org/browse/MWAR-187 which provides several workarounds.

  • downgrade the maven-war-plugin to 2.1-alpha-1
  • deactivate the cache by modifying the maven-war-plugin configuration

    <configuration>
      <useCache>false</useCache>
    </configuration>
    

And I think that configuring M2Eclipse to not use Maven Embedder (but the version you use on the CLI) would also solve the problem and this is my suggestion. You'll find this setting in Window > Preferences > Maven.

Pascal Thivent
A: 

in fact you need to go to preferences->maven->installation and choose your external installation. I am using springsource tool suite. But the maven config path should be same in other eclipse variety.

prasen
A: 

I got this same problem but doing a mvn install. Worked fine in command line but failed from Eclipse.

What actually happened was that apparently my webapp-cache.xml file was corrupted. I solved the problem running mvn clean install.

Diego Pino