maven 2.2.1转eclipse项目遇到的问题

在ubuntu中使用比较新的maven版本,2.2.1,将svn下载下来的项目转为eclipse项目,以前一直是这样:

mvn eclipse:eclipse

结果抛出了异常,通过-e参数可以打印出来:

Caused by: org.apache.maven.plugin.MojoExecutionException: Request to merge when ‘filtering’ is not identical. Original=resource src/main/resources: output=target/classes, include=[**/*.properties|hibernate.cfg.xml], exclude=[**/*.java], test=false, filtering=true, merging with=resource src/main/resources: output=target/classes, include=[], exclude=[**/*.java], test=false, filtering=false
    at org.apache.maven.plugin.eclipse.EclipseSourceDir.merge(EclipseSourceDir.java:302)

 

更换为maven 2.1.0,问题依旧,以前用的版本是2.0.9。

应该是maven的eclipse插件更新版本后出现的问题,强制使用2.6版本插件,问题解决:

mvn org.apache.maven.plugins:maven-eclipse-plugin:2.6:eclipse

因为当前最新的eclipse插件是2.7版本,使用这个版本必须要做有关过滤的设置。也可以将强制版本的设置写到pom.xml文件中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.6</version>

这样直接用:

mvn eclipse:eclipse

也不会报错了。

那么,能否将pom.xml改为能兼容maven eclipse 2.7插件的形式呢?根据报错的提示,估计是和resources部分的标示符有关,原来pom.xml文件中有类似这样的内容:

<resource>
    <directory>src/main/resources</directory>
    <includes>
        <include>**/*.properties</include>
        <include>hibernate.cfg.xml</include>
    </includes>
    <filtering>true</filtering>
</resource>
<resource>
    <directory>src/main/resources</directory>
    <filtering>false</filtering>
</resource>

 

有两个相同目录名称的resource节点,将后者注释掉后问题解决。另外,看看testResources是否也有类似情况,也需要注释掉。

这次eclipse插件升级是为了fix bug:

http://jira.codehaus.org/browse/MECLIPSE-104

看来对resource的实现部分有影响。

PDF    发送文章为PDF   

这篇文章上的评论的 RSS feed TrackBack URI

Leave a Reply