2017-02-15 4 views
1

Ich habe ein Root-Modul und Submodul in Maven im Projekt. Ich versuche Lombok zu benutzen. Ich habeWie konfiguriere ich Lombok mit maven-compiler-plugin?

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

root pom.xml. Im Submodul habe ich eine Klasse mit Lombok Annotationen. Als ich das Projekt erstellen bin versucht, erhalte ich eine Menge

nicht Symbol finden

wo ich versuche, Getter und Setter zu nennen. meine kommentierte Klasse src/main/lombok

Ich habe versucht, lombok-Maven-Plugin mit derselben Version (1.16.12) in Wurzel pom und in dem Unter pom auch mit delombok zu bedienen und zu bewegen, ich habe durchschaute fast alle Fragen in SO, probiere alle Varianten aus, aber nicht erfolgreich.

Ich benutze Maven 3, Java 8, Maven-Compiler-Plugin mit 3.6.1 Version.

Wie sollte ich das Projekt konfigurieren, um Lombok verwenden zu können? Oder vielleicht mache ich etwas falsches.

+0

Haben Sie es als Abhängigkeit hinzugefügt? Sie müssen es als Plugin konfigurieren, das vor dem Kompilier-Plugin ausgeführt wird: http://awhitford.github.io/lombok.maven/lombok-maven-plugin/usage.html – wemu

+0

Welche Art von IDE verwenden Sie? – pezetem

+0

Wie bauen Sie Ihr Projekt? Verwenden Sie eine IDE? Haben Sie versucht, es direkt mit Maven zu erstellen? –

Antwort

0

Ich war mit Java 8 und @Getter(onMethod = @__({@NoSerialization})) und @Getter(onMethod = @__({@Translation(messageKey = "translation.key")})) Onx Anmerkungen. Und ich bekomme duplicate element '<any?>' in annotation @<any?>. in Fehlerausgabe. Sieht so aus, als hätten Jungs aus Lombok seit langem Probleme mit Java 8, link to issue on github. Lombok behandelt keine Annotationen mit Parametern wie messageKey oben in Anmerkung. Es funktioniert nur mit Anmerkungen ohne Parameter und Anmerkungen mit nur value Parameter (wenn Sie nicht den Namen des Parameters schreiben).

+1

@ AJT_82 Es war keine neue Frage, es war eine echte Antwort mit einer Bitte um Hilfe (wenn sich jemand in Zukunft diese Frage ansieht, wenn Lombok solche Annotationen unterstützt). 1 Stimme –

+0

Ich habe nicht downvote.Aber Sie haben wahrscheinlich einen Downvote, weil Sie eine Frage in Ihrer Antwort hatten (was nicht erlaubt ist) Nun haben Sie Ihre Antwort formatiert, und es scheint eine richtige Antwort zu sein :) – Alex

+0

Dies ist aufgrund eines Fehlers in JavaC. Wir haben einen Weg gefunden, um das Problem zu umgehen. Sie können unseren Fortschritt verfolgen und der Diskussion folgen: https://github.com/rzwitserloot/lombok/issues/778 – rzwitserloot

1

Ich bin nicht sicher, was der Unterschied zwischen lombok und lombok-Maven-Plugin, aber meine Projekte werden mit dieser Abhängigkeit konfiguriert:

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

Ich habe nicht mit Wurzel und Submodul Poms noch experimentiert, als meine Projekte sind alle eher voneinander isoliert. Nicht sicher, ob das ein Problem für dich verursachen könnte.

Wenn Sie Eclipse verwenden, haben Sie die Datei lombok.jar ausgeführt und auf Ihre Datei eclipse.exe gesetzt? Es muss die .exe ändern, damit Eclipse weiß, dass diese Getter und Setter kommen, sodass Eclipse sich während der Entwicklung nicht beschwert.

Edit: Ich verwende Maven-Compiler-Plugin:

 <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

Verwenden Sie Maven-Compile-Plugin? IDE spielt keine Rolle. –

+0

Sieht so aus, als könnte Lombok nicht mit maven-compiler-plugin und Annotationen wie '@Getter (onMethod = @__ (@ Translation (messageKey =" translation.key "))) 'funktionieren. Ich erhalte den Kompilierfehler "Ich kann das Symbol nicht finden: Klasse __". Aber es funktioniert gut mit '@Getter (onMethod = @__ (@ NoSerialization))' -wie Anmerkungen –

+0

@ O.Zaiats Angesichts Ihrer Post über @Getter (onMethod = @ __..., ich vermute, dass meine Konfiguration nicht helfen kann Da ich diese Annotation nicht verwende, wird in dem Fehlerbericht, den Sie verlinkt haben, klargestellt, dass es etwas Spezielles für diese Annotationssyntax und Java 1.8 ist.Was es wert ist, verwende ich JDK 1.8.0_60 und Maven 3.3.9 (embedded (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

Während dieses Code-Snippet die Lösung sein kann, [einschließlich einer Erläuterung] (// meta.stackexchange.com/ Fragen/114762/Erklären-vollständig-Code-basierte Antworten) hilft wirklich, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. – peacetype

+0

@RafaelLemes Wie Sie in meiner Frage sehen können, habe ich zur Verfügung gestellt –

Verwandte Themen