2017-02-15 74 views
1

我在項目的maven中有一個根模塊和子模塊。我正在嘗試使用龍目島。 我已經加入如何用maven-compiler-plugin配置Lombok?

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

根pom.xml中。 在子模塊中,我有一個Lombok註釋類。 當我試圖建立的項目中,我得到了很多的

找不到符號

在那裏我試圖調用getter和setter。

我曾嘗試使用龍目島 - Maven的插件在根POM和子POM同一版本(12年1月16日),以及與delombok和移動我的註釋類的src/main /龍目島,我有通過幾乎所有的問題來看看,嘗試所有的變體,但不成功。

我正在使用Maven 3,Java 8,帶有3.6.1版本的maven-compiler-plugin。

我應該如何配置項目才能使用lombok?或者,也許我做錯了。

+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")})) ONX註解。我在錯誤輸出中獲得duplicate element '<any?>' in annotation @<any?>.。看起來來自龍目島的傢伙長期以來對Java 8有這樣的問題link to issue on github。 Lombok不會在上面的註釋中處理帶有參數messageKey的註釋。它僅適用於沒有參數和註釋的註釋,只有value參數(當您不寫參數名稱時)。

+1

@ AJT_82這不是一個新問題,它是一個真正的答案,需要一些幫助(如果將來有人會在龍目島支持這種註釋的時候看到這個問題),所以你應該刪除 - 1投票 –

+0

我沒有downvote,但你可能得到一個downvote,因爲你有一個問題在你的答案(這是不允許的)現在你已經格式化你的答案,現在似乎是一個正確的答案:) – Alex

+0

這是由於javac中的錯誤。我們想出瞭解決這個問題的方法。您可以跟蹤我們的進展,並通過以下討論:https://github.com/rzwitserloot/lombok/issues/778 – rzwitserloot

1

我不知道有什麼區別龍目島Lombok的和,Maven的插件之間,但我的項目都配置了這種依賴性:

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

我還沒有根和子模塊勁歌試驗呢,因爲我的項目都傾向於相互隔離。不知道這是否會對您造成問題。

如果您使用Eclipse,是否運行lombok.jar文件並將其指向您的eclipse.exe文件?它需要修改.exe,以便Eclipse知道那些getter和setter即將到來,以便Eclipse在開發過程中不會發生抱怨。

編輯: 我使用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

看起來像Lombok無法使用maven-compiler-plugin和annotations,比如'@Getter(onMethod = @__(@ Translation(messageKey =「translation.key」)))''。我得到一個'找不到符號的符號:class __'編譯錯誤。但它可以很好的使用'@Getter(onMethod = @__(@ NoSerialization)''''註釋 –

+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 /解釋 - 完全基於代碼的答案)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – peacetype

+0

@RafaelLemes正如你可以看到我的問題,我用提供