JacORB:更改前缀和后缀

JacORB: changing prefix and suffix

我想在从 idl 生成 java 时更改我的 ant 构建中的包 前缀和后缀 。这必须是通用解决方案!这个想法是这样的:

我有 idl 文件(ONE.idl、TWO.idl),第一个是命名空间 ONE_cb,第一个是 TWO_cb 秒(因为 C++ 兼容性需要 _cb 后缀)。 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

不可接受

感谢您的宝贵时间。

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

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-plugin,因为您可以使用它轻松地执行多个操作。

为了使用多个 i2jpackage,我使用了它

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

(其中 antBugJac608-2 #includes antBugJac608)。

对于各种研究,我得出结论,通用解决方案是不可能的。 同时执行更改前缀和后缀的唯一方法是显式设置所有包含的名称。