gpt4 book ai didi

java - Ant:应用任务:以并行 ="true"模式为每个输入文件添加额外参数

转载 作者:行者123 更新时间:2023-12-02 05:45:34 25 4
gpt4 key购买 nike

我有一个 ant 构建文件,其中:

<target name="foo"> 
<apply executable="bar" parallel="true">
<fileset dir="." includes="*.xxx" />

<srcfile prefix="--session " />
</apply>
</target>

这将为 .xxx 类型的每个文件调用 bar,并使用 --session a.xxx单个参数 在当前目录中。如何让 ant 为每个 .xxx 类型的文件调用带有 两个 参数的 bar? p>

在理想情况下,bar 会为 类型的每个文件接收两个参数,--sessiona.xxx .xxx.

最佳答案

虽然有点晚了,但我希望将来遇到此问题的任何人都可以考虑我的解决方案,并希望能解决您的问题。

对于我的示例,我尝试执行 yuicompressor,并在多个输入文件上运行多个选项:

<apply executable="java" parallel="true">
<fileset dir="./js-ori">
<include name="**/*.js" />
</fileset>
<arg line="-jar" />
<arg path="yuicompressor.jar" />
<arg line="--nomunge" />
<arg line="--preserve-semi" />
<srcfile />
<arg line="-o" />
<arg line="&apos;.js$:.min.js&apos;" />
</apply>

由于带有 'parallel="true"' 的 apply 命令只会应用第一个输入文件上的选项,因此结果不是预期的结果。不要让 ANT 传入输入文件,而是使用 手动传入输入文件。

<!-- Get the fileset as a string -->
<fileset id="myFileSet" dir=".">
<include name="js/**/*.js" />
<exclude name="js/lib/**" />
</fileset>
<property name="fileset" refid="myFileSet" />

<!-- Replace all ';' of the string of files from fileset to your intended options -->
<replaceStringWithRegExp string="${fileset}"
searchPattern=";"
replacementPattern=" --nomunge --preserve-semi "
property="result"/>

<!-- We will disallow <apply> to take in input files by itself since we are already appending the input files manually. -->
<!-- Therefore we add 'addsourcefile="false"' -->
<apply executable="java" parallel="true" addsourcefile="false">
<fileset dir="./js">
<include name="**/*.js" />
<exclude name="lib/**" />
</fileset>
<arg line="-jar" />
<arg path="yuicompressor-2.4.7.jar" />
<arg line="-o" />
<arg line="&apos;.js$:.min.js&apos;" />
<arg line="${result}" /> <!-- pass in the string of options and file names -->
</apply>

这是我使用多个输入文件和选项执行 yuicompressor 一次的解决方案。我不确定 .jar 文件的其他执行,但解决方案应该具有类似的概念。如果您发现代码中有任何可以改进的部分,请告诉我!谢谢!

注意:如果您不想为 ant-contrib 安装,您可以使用下面链接中 Giorgio Ferrara 创建的 ReplaceStringWithRegExp 函数。

Reference

感谢 Giorgio Ferrara 提供的replaceStringWithRegExp 函数!

关于java - Ant:应用任务:以并行 ="true"模式为每个输入文件添加额外参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24100659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com