2012-11-15 31 views
0

我的實體對象分散在多個罐子中。
在jar中我有一個基類名MyBase,它用@MappedSuperclass註解。
在jar B中有一個派生自MyBase的實體類。
問題是因爲編織是在jar文件的上下文中完成的(我正在使用maven插件),所以基類(MyBase)沒有插裝(儘管它應該)。
如果我將派生類從jar B移動到A,那麼編織過程也將處理基礎。
由於我正在開發一個大型項目,因此以模塊化方式進行開發至關重要。
EclipseLink是否支持這種方法?@MappedSuperclass使用EclipseLink和多個罐子進行靜態編織

回答

1

我發現重寫這個限制的唯一方法是向定義@MappedSuperclass基類的jar中添加一個臨時實體類,並在編織過程之後將其刪除。
傷心,但真正;-)

+0

是的,虛擬實體工作正常。然而,我爲此創建了錯誤報告,您可能想投票:bugs.eclipse.org/bugs/show_bug.cgi?id=466271 – virgo47

0

我對maven插件沒有把握,但是你應該可以在兩個罐子上使用靜態編織器,你需要調用它兩次來編織兩者,並且需要兩個編織器類路徑上的罐子調用。

+0

問題是,第二個jar依賴於第一個,所以我需要在第二個可以構建之前構建第一個jar。這意味着將編織過程從與我無關的構建過程中移出。不過謝謝。 –

0

另外,您可以指定JAR包含您的超類INPATH - 作爲解釋herehere

管理多個項目

大廈AspectJ的源代碼需要兩個不同的階段;編譯 .java和.aj文件中的源以生成.class文件,然後 將這些方面應用於生成的.class文件。第二階段 稱爲編織,是AspectJ和Java編譯器之間的主要區別。 Java編譯過程由類路徑 設置控制,該設置使編譯器可以解析類型。 AspectJ編譯過程 使用相同的類路徑設置,它在Eclipse中的配置方式完全相同。但是,在所有情況下,此設置不足以控制編譯和編織步驟 。這就是爲什麼有兩個額外的設置 可用於AspectJ項目。

首先,有inpath設置。此處指定的任何內容將爲編織者可用的 ,因此適用的任何方面將編織爲 。通過在項目上右鍵單擊 ,選擇屬性,然後轉到AspectJ InPath ,可以將項添加到項目的入口路徑中部分。條目可以是JAR文件或目錄( 文件夾),例如另一個項目的bin目錄。任何在 上的inpath都會被髮送到項目的輸出,在潛在地被 與方面編織在一起。

第二個附加設置是縱向路徑。儘管inpath 控制着編織事物的列表,但縱橫比控制 編織到列表中的是什麼。換句話說,縱向路徑上的 上指定的任何方面都可用於織造過程,就好像它們在項目中以源代碼形式存在一樣。此設置是從AspectJ Aspect Path屬性頁面控制的 ,可以包含 JAR文件或目錄。

輸出JAR設置也存在於每個 項目屬性頁面的AspectJ部分。此設置會使編譯器將 類文件直接輸出到JAR文件,而不是輸出到項目的輸出 文件夾。

像你一樣讓我瘋狂 - 希望這會有所幫助。 ;)

+0

感謝您的答案,但正如我在另一個答案寫的問題是,第二個罐取決於在第一個,所以我需要第一個建成之前,第二個可以建成。這意味着將編織過程從與我無關的構建過程中移出。 –

相關問題