从build.xml调用时,linux中的jaxb schemagen问题。无法找到源文件?

时间:2013-02-28 07:15:01

标签: java ant jaxb schemagen

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

schemagen -version在Windows和Linux上都给出了相同的结果..

  

schemagen版本“JDK 6中的JAXB 2.1.10”用于XML绑定的JavaTM体系结构(JAXB)参考实现,(在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 / sources / *。java [exec] 1错误[exec]结果:1

在Windows中,完全相同的蚂蚁目标工作正常。 请帮忙!把头发拉出来。如果您需要更多详细信息,请与我们联系。

为了它的价值,我还尝试使用绝对路径而不是备份目录来获取我的ant任务中的源文件...当尝试使用ant时,我仍然会遇到相同的错误。

  

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

1 个答案:

答案 0 :(得分:1)

试试这个:

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

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

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