关于eclipse:我在m2eclipse上构建错误但在命令行上没有使用maven2 – 我的m2eclipse是否配置错误?

I have build errors with m2eclipse but not with maven2 on the command line - is my m2eclipse misconfigured?

我安装了M2Eclipse来在Eclipse中构建Java项目。

我导入项目如下:

1
2
3
4
5
6
7
Import->
Maven->
Existing Maven Projects->
Import Maven Projects->
- Select root directory
- Select pom file
- Click Finish

为了确保m2eclipse确实在构建这个项目,我删除了目标目录,并确保它是由m2eclipse重新创建的。但是与maven的命令行版本(它完美地构建了所有东西)不同,m2eclipse在源代码中留下了大量的构建错误。

是否可能我没有正确配置M2Eclipse?我怎么检查这个?

这是一个Github链接,指向我正在尝试构建的项目。我在这一行得到@override build错误。它说"该方法必须重写超类方法"。


更新:问题与将项目导入Eclipse后"必须重写超类方法"错误中描述的问题相同,下面是接受的答案:

Eclipse is defaulting to Java 1.5 and you have classes implementing interface methods (which in Java 1.6 can be annotated with @Override, but in Java 1.5 can only be applied to methods overriding a superclass method).

将编译器级别更改为Java 1.6会使问题消失。为此,请修改编译器插件配置:

1
2
3
4
5
6
7
8
9
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  maven-compiler-plugin</artifactId>
  <version>2.1</version>
  <configuration>
    <source>1.6</source>
    <target>1.6</target>
  </configuration>
</plugin>

并且更新项目配置(右键单击项目,然后maven v更新项目配置)确实解决了Eclipse下的问题。

或者坚持1.5,但删除有问题的@override注释。

我不知道泰勒是如何处理Java 1.5编译器级别的。我的猜测是这个项目不会建立在带有JDK5的命令行上。

But unlike with the command-line version of maven which built everything perfectly, m2eclipse leaves a large number of build errors in the source code.

很难准确地说出发生了什么而没有看到那些"错误"(它们真的是错误吗?)。请提供一些痕迹。

Is it possible that I did not configure m2eclipse properly? How would I check this?

一个区别是,M2Eclipse默认使用maven 3的嵌入式版本,该版本可能与您在命令行上使用的版本不同。您可以通过window v preferences v maven v installation(并添加您自己的安装)来更改:

alt text

但是,尽管我建议在Eclipse下使用与命令行相同的版本,但这很可能不是问题的根本原因,Maven2构建应该在Maven3上运行而不会出现问题。


如果Eclipse配置为使用Java 1.5而不是1.6,则会出现重写错误。检查项目属性。


我查过密码了。我也有同样的问题。代码似乎刚刚被破坏。

编辑:当然是。查看类com.jappstart.service.auth.userdetailssserviceimpl。它想要重写方法public final UserDetails loadUserByUsername(final String username),但是这个方法不存在于类实现的接口中,并且没有超类。

编辑:好吧,这并不能解释为什么它是用Maven Standalone构建的。这对我也有用。很奇怪。看起来这个版本有点不适合M2Eclipse。

编辑:我很确定代码可以工作,因为字节码是由DataNucleus插件修改的。当我以maven build(右键单击->run->maven包)的形式运行项目时,它成功地创建了与m2eclipse的战争。所以我想问题出在M2EclipseMaven构建器上。