在从idl生成java时,我想更改ant构建中的包前缀和后缀。这必须是通用的解决方案!想法是这样的:
我有idl文件(ONE.idl,TWO.idl),命名空间ONE_cb在第一个,TWO_cbom.example.ONE和com.example.TOO.的包
我使用的是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
不可接受
谢谢你抽出时间。
如果我理解正确,你有类似的东西
module ONE_cb
{
...
}
但你希望它是
com.example.ONE { ... }
这对于i2jpackage是可行的,例如
idl -forceOverwrite -d /tmp/generated -i2jpackage ONE_cb:com.example.ONE myfile.idl
您遇到的问题是同时编译这两个文件。删除"all"并尝试分两个阶段编译它们。
如果你正在使用Maven,我也建议你试试org.codehaus.mojo:idlj-Maven插件,因为你可以很容易地执行多个插件。
要使用多个i2jpackage,我让它与一起工作
idl -forceOverwrite -d /tmp/generated -all -i2jpackagefile /tmp/file antBugJac608-2.idl
(其中antBugJac608-2#包括antBugJac 608)。
对于各种研究,我得出结论,通用解决方案是不可能的。同时更改前缀和后缀的唯一方法是显式设置所有包含的名称。