JacORB:更改前缀和后缀

问题描述:

我想在我的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

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

如果我理解正确的话,你有类似

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