1

以下是详细信息:这在 Windows 上运行良好,但在 Linux 上无法运行,我需要它才能在 Linux 机器上运行。

schemagen -version 在 Windows 和 Linux 上给出相同的结果。

schemagen 版本“JDK 6 中的 JAXB 2.1.10”用于 XML 绑定 (JAXB) 参考实现的 JavaTM 架构,(在 JDK 6 中构建 JAXB 2.1.10)

这是有问题的蚂蚁代码:
<target name="genSchema" description="Generate Schema from Java source files">
<exec executable="schemagen">
<arg line="-d ../target/schema ../path/to/source/*.java" />
</exec>
</target>

首先,这一切在 Windows 中都可以正常工作。在 Linux 中,如果我从命令行运行以下命令,生成模式没有问题:

schemagen -d ../target/schema ../path/to/source/*.java

注意:写../target/schema/schema1.xsd

但是,如果我在 Linux 中从上面的 build.xml 运行 ant 目标,则会收到以下错误:

[exec] 错误:无法读取:../path/to/source/*.java [exec] 1 错误 [exec] 结果:1

在 Windows 中,完全相同的 ant 目标可以正常工作。请帮忙!把我的头发拉出来。如果您需要更多详细信息,请告诉我。

对于它的价值,我还尝试使用绝对路径而不是备份目录来访问我的 ant 任务中的源文件......尝试使用 ant 执行此操作时仍然遇到相同的错误。

Ex. <arg line="-d ../target/schema /home/path/to/source/*.java" />
[exec] error: cannot read: /home/path/to/source/*.java

4

1 回答 1

1

试试这个:

<exec executable="bash">
    <arg line='-c "schemagen -d ../target/schema ../path/to/source/*.java"' />
</exec>

正如我们上面讨论的,问题似乎是在某些 Unix 系统上, exec 任务没有扩展通配符。因此,这是尝试将命令传递给将为您进行扩展的 shell。

是的,我意识到这个解决方案使 build.xml 文件特定于 unix。如果这行得通,有办法解决这个问题。

于 2013-02-28T07:48:20.473 回答