2017-02-15 11 views
1

У меня есть корневой модуль и подмодуль в maven в проекте. Я пытаюсь использовать Ломбок. Я добавилКак настроить Lombok с maven-compiler-plugin?

<dependency> 
    <groupId>org.projectlombok</groupId> 
    <artifactId>lombok</artifactId> 
    <version>1.16.12</version> 
    <scope>provided</scope> 
</dependency> 

корневой pom.xml. В подмодуле у меня есть класс с аннотациями Ломбока. Когда я пытаюсь построить проект я получаю много

не может найти символ

, где я пытаюсь вызвать методы получения и установку.

Я пытался использовать Ломбок-Maven-плагин с той же версии (1.16.12) в корневой ПОМ и в суб ПОМ, а также с delombok и перемещении моего аннотированный класс SRC/основной/Ломбок, у меня есть просмотрел почти все вопросы в SO, попробуйте все варианты, но не получится.

Я использую Maven 3, Java 8, maven-compiler-plugin с версией 3.6.1.

Как мне настроить проект на использование ломбока? Или, может быть, я делаю что-то неправильно.

+0

Вы добавили его в качестве зависимости? вам нужно настроить его как плагин для выполнения перед плагином компиляции: http://awhitford.github.io/lombok.maven/lombok-maven-plugin/usage.html – wemu

+0

какая среда IDE вы используете? – pezetem

+0

Как вы строите свой проект? Вы используете IDE? Вы пытались построить его с помощью maven прямо? –

ответ

0

Я использую Java 8 и @Getter(onMethod = @__({@NoSerialization})) и @Getter(onMethod = @__({@Translation(messageKey = "translation.key")})) аннотаций. На X. И я получаю duplicate element '<any?>' in annotation @<any?>. в выводе ошибки. Похоже, ребята из Ломбока имеют такую ​​проблему с Java 8 в течение длительного времени link to issue on github. Ломбок не обрабатывает аннотации с параметрами, такими как messageKey в аннотации выше. он работает только с аннотациями без параметров и аннотаций только с параметром value (когда вы не пишете имя параметра).

+1

@ AJT_82 Это был не новый вопрос, это был реальный ответ с просьбой о помощи (если кто-то будет смотреть на этот вопрос в будущем, когда Ломбок будет поддерживать такие аннотации). Поэтому вы должны удалить - 1 голос. –

+0

Я не спустил вниз. Но вы, вероятно, получили понижение, потому что у вас был вопрос в вашем ответе (что не разрешено). Теперь вы отформатировали свой ответ, и теперь это правильный ответ :) – Alex

+0

Это из-за ошибки в javac. Мы выяснили, как можно обойти эту проблему. Вы можете отслеживать наш прогресс и следовать дискуссиям через: https://github.com/rzwitserloot/lombok/issues/778 – rzwitserloot

1

Я не уверен, что разница между Ломбок и Ломбок-Maven-плагин, но мои проекты настроены с этой зависимостью:

<dependency> 
     <groupId>org.projectlombok</groupId> 
     <artifactId>lombok-maven-plugin</artifactId> 
     <version>1.16.12.0</version> 
    </dependency> 

Я не экспериментировал с корнем и подмодуля POMS еще, поскольку мои проекты, как правило, довольно изолированы друг от друга. Не уверен, может ли это быть причиной для вас.

Если вы используете Eclipse, запустите файл lombok.jar и указали его на свой файл eclipse.exe? он должен изменить файл .exe, чтобы Eclipse знал, что эти геттеры и сеттеры приходят, так что Eclipse не жалуется во время разработки.

Edit: Я использую Maven-компилятор плагинов:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.6.1</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
+0

Вы используете maven-compile-plugin? IDE не имеет значения. –

+0

Похоже, что Ломбок не мог работать с maven-компилятором-плагином и аннотациями типа '@Getter (onMethod = @__ (@ Translation (messageKey =" translation.key ")))'. Я получаю ошибку компиляции 'не могу найти символ: class __'. Но он отлично работает с '@Getter (onMethod = @__ (@ NoSerialization))' -like аннотации –

+0

@ O.Zaiats Учитывая ваше сообщение о @Getter (onMethod = @ __..., я подозреваю, что моя конфигурация может не помочь вам , так как я не использую эту аннотацию, и связанный с ней отчет об ошибке дает понять, что это что-то особенное для синтаксиса аннотации и Java 1.8. Для чего я использую JDK 1.8.0_60 и Maven 3.3.9 (встроенный в Eclipse Neon) –

0
use: <scope>provided</scope> in pom.xml 
like that: 
<pre> <code> 
    <dependencies> 
    <dependency> 
     <groupId>org.projectlombok</groupId> 
     <artifactId>lombok</artifactId> 
     <version>1.16.20</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 
</code> 
</pre> 
+1

Хотя этот фрагмент кода может быть решением, [включая объяснение] (// meta.stackexchange.com/ вопросы/114762/explaining-whole-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. – peacetype

+0

@ RafaelLemes Как вы можете видеть в моем вопросе, я использовал при условии, что