以下是详细信息:这在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
答案 0 :(得分:1)
试试这个:
<exec executable="bash">
<arg line='-c "schemagen -d ../target/schema ../path/to/source/*.java"' />
</exec>
正如我们上面所讨论的,问题似乎是在某些Unix系统上,exec任务不会扩展通配符。因此,这是尝试将命令传递给shell,它将为您进行扩展。
是的,我意识到这个解决方案使build.xml文件特定于unix。如果这样可行,有办法解决这个问题。