Lombok 的@ToString導致的Maven編譯錯誤
大多數後端元件共享一些作為 maven 依賴項使用的公共程式碼。幾天來,這個公共庫的構建因編譯錯誤而間歇性失敗——這是您幾乎從未見過的,因為編譯(與測試相反)本質上是確定性的。
構建失敗,出現以下 2 個錯誤:
17:42:56 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project distributed-lock-api: Compilation failure: 17:42:56 [ERROR] ~/jenkins/workspace/iplan-common-PL/distributed-lock-api/src/main/java/com/att/distributedlock/DistributedLockResponse.java:[10,1] package org.springframework.lang does not exist 17:42:56 [ERROR] ~/jenkins/workspace/iplan-common-PL/distributed-lock-api/src/main/java/com/att/distributedlock/DistributedLockStatusResponse.java:[12,1] package org.springframework.lang does not exist |
使用:./mvnw clean compile -pl distributed-lock-api -am。如果你不熟悉 maven: 這個命令是僅在分散式鎖 API模組(編譯失敗)及其依賴項上執行clean & compile。
這時編譯器抱怨的缺失包 ( org.springframework.lang ) 不在原始碼中,我懷疑Lombok,
因為它的註釋處理器在 java 編譯器處理檔案之前修改了原始碼。我選擇了 2 個有問題的檔案之一併開始進行更改——首先我將 Lombok 的@ToString註釋向下移動了幾行,並看到報告的錯誤行相應地移動。然後我刪除了@ToString註釋,錯誤就消失了。
在這一點上,我不太明白為什麼 Lombok 的@ToString會導致這個錯誤,但至少我有一個可行的解決方案 : 使用 IDE 生成 toString 方法並完成它。
這個問題仍然困擾著我,所以我深入研究了。我知道 Lombok 有一個配置系統,可以讓您在原始碼中新增諸如org.springframework.lang.NonNull等註釋。事實上,我們在組的主要應用程式中使用了這種配置。它需要新增帶有諸如lombok.addNullAnnotations = spring 之類的指令的lombok.config檔案。但是我搜尋了該檔案(通常放置在專案根目錄中),它不存在。但在使用Jenkins構建時lombok.config有可能在 Jenkins 工作區的父目錄之一,這時因為lombok檢視父目錄以獲取更多配置檔案lombok.config。
完全解決辦法是:在公共lib 根目錄中放置了一個lombok.config檔案,其中包含一個指令以停止lombok搜尋父目錄以獲取進一步的配置。
相關文章
- 升級Xcode10導致的編譯錯誤XCode編譯
- Lombok編譯器Maven外掛Lombok編譯Maven
- Bitcode導致的編譯報錯編譯
- 編譯過程導致ORA-4068錯誤編譯
- 編譯錯誤導致浪費10多分鐘, 編譯錯誤的提示:xxx does not name a type xxx編譯
- 編譯檢視導致ORA-00600_17069錯誤編譯
- 編譯PHP的錯誤編譯PHP
- impdp時parallel=4導致的錯誤Parallel
- 菜鳥調錯(八)—— Maven編譯錯誤:不相容的型別的解決方案Maven編譯型別
- 又見想當然導致的誤譯
- 經典的編譯錯誤 (轉)編譯
- [譯] RxJS: 避免因濫用 switchMap 而導致錯誤JS
- VS 編譯錯誤編譯
- merge語句導致的ORA錯誤分析
- Maven建立專案遇到導包錯誤:Maven
- ipvs編譯錯誤編譯
- php編譯小錯誤PHP編譯
- 多餘索引導致explain錯誤索引AI
- 【爬坑】.Net編譯環境導致的問題編譯
- 編譯EJB出現錯誤的解決編譯
- JB7的常見編譯錯誤!!編譯
- 修復svn hook導致的字符集錯誤Hook
- sys密碼修改導致的RMAN-00571錯誤密碼
- goldengate命令輸入錯誤導致的血案2Go
- Maven編譯elasticsearch-analysis-ik報錯Maven編譯Elasticsearch
- [請教]使用Struts標籤時由Jsp編譯成Servlet之後Try塊的程式碼太多導致的錯誤JS編譯Servlet
- GoldenGate MSSQL Oracle的主鍵問題導致的錯誤GoSQLOracle
- opencv 編譯常見錯誤OpenCV編譯
- lombok編譯遇到“找不到符號的問題”Lombok編譯符號
- 最近編譯tolua_runtime安卓編譯錯誤編譯安卓
- Ubuntu上的pycrypto給出了編譯器錯誤Ubuntu編譯
- Docker環境編譯時的錯誤記錄Docker編譯
- 編譯notepad++的錯誤解決編譯
- 執行無法解決的編譯錯誤編譯
- maven錯誤解決:編碼GBK的不可對映字元Maven字元
- oracle 儲存過程不能編譯-- (編譯的同時正在訪問所導致的) [轉載]Oracle儲存過程編譯
- PostgreSQL DBA(29) - Backup&Recovery#2(日期格式導致的錯誤)SQL
- 12.2.0.1bug導致的Failed to register in OCRLOCAL group.錯誤AI