2015-02-23 144 views
0

我想在我的ant版本中更改包前綴和後綴,同時從idl生成java。這必須是通用的解決方案!這個想法是這樣認爲:JacORB:更改前綴和後綴

我在第二IDL文件(ONE.idl,TWO.idl)與命名空間ONE_cb在第一和TWO_cb(如需要_cb後綴用於C++兼容性)。 TWO_cb具有來自ONE_cb的屬性,ONE_cb只具有基本類型。我想將其更改爲包裝類似com.example.ONEcom.example.TWO

我正在使用JacORB 3.6。我不知道該怎麼做。
我的代碼看起來像這樣:

<target name="idlj-generate"> 
<idl2java 
    srcdir="${psm.dir}/${project}/" 
    destdir="${build.generated.dir}" 
    includepath="${psm.dir}" 
    all="true"> 
     <define key="__JACORB_GENERATE__"/> 
     <i2jpackage names=":com.example"/> 
     <i2jpackage names="_cb:"/> 
</idl2java> 
</target> 

它不工作。正如我之前所說,它必須是通用解決方案。加入

<i2jpackage names="TWO_cb:TWO"/> //option 2 
<i2jpackage names="ONE_cb:ONE"/> //option 2b 

是不能接受的

感謝您的時間。

回答

0

對於各種研究,我總結出通用解決方案是不可能的。 執行更改前綴和後綴同時執行的唯一方法是明確設置所有包含的名稱。

+0

如果您可以在JacORB Bugzilla中提供完整的測試用例,我可以查看它 – 2015-02-26 13:17:25

0

如果我理解正確的話,你有類似

module ONE_cb 
{ 
... 
} 

,但你希望它是

com.example.ONE { ... } 

這是i2jpackage例如可行

idl -forceOverwrite -d /tmp/generated -i2jpackage ONE_cb:com.example.ONE myfile.idl 

你的問題是你一次編譯兩個文件。刪除「全部」,並嘗試分兩個階段進行編譯。

如果您使用的是Maven,我也會推薦嘗試org.codehaus.mojo:idlj-maven-plugin,因爲您可以很容易地使用它執行多個執行。

要使用多個i2jpackage我得到了它與

idl -forceOverwrite -d /tmp/generated -all -i2jpackagefile /tmp/file antBugJac608-2.idl 

(其中antBugJac608-2的#includes antBugJac608)工作。

+0

這並沒有幫助我。首先我不使用maven。其次,正如我說過兩次:我想要通用的解決方案 - 更改名稱顯示是顯而易見的。第三個也是最重要的事情:分兩個階段編譯會正確生成一個(因爲它只有基本類型),但編譯TWO不會導致錯誤,因爲TWO具有來自ONE的屬性,即* ONE_cb :: structA a; *並且首先生成的文件不再是ONE_CB,而是com.example.ONE – Kage 2015-02-24 06:44:07

+0

我編輯了我的答案以包含多個i2jpackage。我相信Ant任務也支持i2jpackagefile(file = xxx),所以你可以試試。 – 2015-02-24 13:50:09

+0

謝謝你的時間 - 在這個和以前的問題 - 但這次它並沒有幫助我: 1.我發現通用解決方案是不可或缺的jacORB。我需要知道所有名稱,並通過i2jpackage更改它們。 2.正如我前面所說 - 刪除「全部」標誌不會編譯我的源文件,因爲每個位於不同的文件夾並生成到不同的文件夾。 虛空感謝您的時間 – Kage 2015-02-26 07:44:05