2020年5月31日 星期日

Eclipse與Maven均產生MetaModel程式碼的衝突處理方式

使用Eclipse以下設定:
預設可以產生MetaModel類別的*.java檔案:
但Maven專案在打包程式碼時,預設會在路徑「target/generated-sources/annotations」下同時也產生MetaModel類別的*.java檔案,因此過程出現如下錯誤訊息:
[ERROR] /D:/_myBooks/book4/book-source/c03/jpa-advanced/target/generated-sources/annotations/entity/Staff_.java:[9,17] duplicate class: entity.Staff_
[ERROR] /D:/_myBooks/book4/book-source/c03/jpa-advanced/target/generated-sources/annotations/entity/Employee_.java:[12,17] duplicate class: entity.Employee_    
解決方案之一是:
1. 在pom.xml內加入以下設定,可以將路徑「target/generated-sources/annotations」成為Maven專案認同的程式碼(*.java)來源,一般只認定src和lib:
2. 關閉Eclipse自動產生MetaModel類別的設定,同時將Eclipse產生的MetaModel類別都刪除(若有):
3. 更新(update) Maven專案。
4. 重新打包Maven專案(clean package)。此時MetaModel類別將由Maven產生,並被認可為*.java來源,所以專案打包成功:
5. 過程中適度使用Eclipse的功能refresh和clean專案。

沒有留言:

張貼留言