У меня есть ошибки сборки с m2eclipse, но не с maven2 в командной строке - мой m2eclipse неправильно настроен? - PullRequest
9 голосов
/ 21 августа 2010

Я установил m2eclipse для создания Java-проекта в Eclipse.

Я импортировал проект следующим образом:

Import->
Maven->
Existing Maven Projects->
Import Maven Projects->
- Select root directory
- Select pom file
- Click Finish

Чтобы убедиться, что m2eclipse фактически строит проект, я удалил целевой каталог и убедился, что он был заново создан m2eclipse. Но в отличие от версии maven для командной строки, в которой все собрано идеально, m2eclipse оставляет большое количество ошибок сборки в исходном коде.

Возможно ли, что я неправильно настроил m2eclipse? Как бы я это проверил?

Это github ссылка на проект Я пытаюсь построить. Я получаю ошибки сборки @Override в этой строке . Он говорит: «Метод createNewToken должен переопределить метод суперкласса».

Ответы [ 3 ]

13 голосов
/ 21 августа 2010

Обновление: Проблема та же, что и описанная в Ошибки 'Must Override a Superclass Method' после импорта проекта в Eclipse , и вот что говорит принятый ответ:

Eclipse по умолчанию установлен на Java 1.5, и у вас есть классы, реализующие методы интерфейса (которые в Java 1.6 можно аннотировать с помощью @Override, но в Java 1.5 можно применять только к методам, переопределяющим метод суперкласса).

Изменение уровня компилятора на Java 1.6 устранит проблему. Для этого измените конфигурацию плагина компилятора:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>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. И я предполагаю, что проект не будет основываться на командной строке с JDK 5.


Но в отличие от версии maven для командной строки, в которой все отлично скомпоновано, m2eclipse оставляет в исходном коде большое количество ошибок сборки.

Трудно сказать, что именно происходит, не видя этих "ошибок" (действительно ли это ошибки?). Пожалуйста, предоставьте некоторые следы.

Возможно ли, что я неправильно настроил m2eclipse? Как бы я это проверил?

Одно отличие состоит в том, что m2eclipse по умолчанию использует встроенную версию Maven 3, которая, вероятно, отличается от версии, используемой в командной строке. Вы можете изменить это с помощью Окно V Предпочтения V Установка Maven V (и добавить свою собственную установку):

alt text

Но хотя я бы порекомендовал использовать ту же версию в Eclipse, что и в командной строке, вполне вероятно, что это не является основной причиной проблемы, сборки Maven 2 должны работать на Maven 3 без проблем.

1 голос
/ 22 августа 2010

Ошибки переопределения появятся, если eclipse настроен на использование Java 1.5 вместо 1.6. Проверьте свойства проекта.

1 голос
/ 21 августа 2010

Я проверил код.У меня точно такая же проблема.Код, кажется, просто сломан.

Редактировать: Это определенно так.Посмотрите на класс com.jappstart.service.auth.UserDetailsServiceImpl.Он хочет переопределить метод public final UserDetails loadUserByUsername(final String username), но этот метод не существует в интерфейсе, который реализует класс, и у него нет суперкласса.

Редактировать: Хорошо, это не объясняет, почему он создается с автономным maven.Это также работает для меня.Очень странно.Кажется, что в сборке происходит что-то, что не работает с m2eclipse.

Редактировать: Я почти уверен, что код работает, потому что байт-код изменяется плагином datanucleus.Когда я запускаю проект как maven build (щелчок правой кнопкой мыши -> Run-> maven package), он успешно создает войну с m2eclipse.Поэтому я предполагаю, что проблема в m2eclipse Maven Builder.

...