2017-02-15 78 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正如你可以看到我的问题,我用提供