我想在我的ant build中更改包前缀和后缀,同时从idl生成java。这必须是通用的解决方案!这个想法是这样的:
我有idl文件(ONE.idl,TWO.idl),第一个名称空间为 ONE_cb ,第二名为 TWO_cb (因为c ++兼容性需要_cb后缀)。 TWO_cb的属性来自ONE_cb,ONE_cb只有基本类型。我想将其更改为包含 com.example.ONE 和 com.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)
如果我理解正确,你会有类似
的内容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 #include antBugJac608)。
答案 1 :(得分:0)
对于各种研究,我得出结论,通用解决方案是不可能的。 只有在同一时间执行更改前缀和后缀的方法是明确设置所有包含的名称。