mkr*_*erx 41 java maven lombok
我最近发现lombok.jar最终出现在我们的最终工件中,这不应该是必要的.在我的理解中,lombok只是编译时.
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.14.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但是当我将它设置为提供的范围时,我在单元测试中会遇到奇怪的行为.在尝试解决时,它们会与ClassNotFoundExceptions崩溃
java.lang.NoClassDefFoundError: com/svv/esp/serviceimpl/dataimport/common/validation/LongValidator
Run Code Online (Sandbox Code Playgroud)
哪个maven范围通常用于lombok?
我在MacOSX 10.9上使用Oracle JDK build 1.8.0_25-b17
age*_*nzo 86
应该在provided范围内使用Lombok (参见官方文档).
原因(正如评论中所述)是lombok是一个仅编译时的工具.也就是说,它不会在运行时所需要的一切.通过制作作用域provided,可以使编译器可以使用lombok库,但它不是编译jar的依赖项.因此,您的最终jar将不依赖于Lombok,并且不需要包含在任何部署中,这样可以减少可部署的依赖性和大小.
通常compile.provided适用于通常与将托管应用程序的应用程序服务器一起提供的jar.如果您不想在最终应用程序中使用jar,最好是直接使用maven插件而不是jar:http://awhitford.github.io/lombok.maven/lombok-maven-plugin/index. HTML
人们可以与 一起工作compile并true为<optional/>.
<scope>compile</scope>\n<optional>true</optional>\nRun Code Online (Sandbox Code Playgroud)\n\n请参阅Maven \xe2\x80\x93 可选依赖项和依赖项排除。
\n| 归档时间: |
|
| 查看次数: |
11353 次 |
| 最近记录: |