gpt4 book ai didi

java - 尝试多次调用 ANT 目标时失败

转载 作者:太空宇宙 更新时间:2023-11-04 14:41:45 26 4
gpt4 key购买 nike

我正在使用 ANT 在构建时预编译 Handlebars 。我按照这里的路http://blog.selvakn.in/2012/05/precompiling-handlerbars-tempates-with.html 。而且仅针对一个目标,它的效果非常好。但后来我尝试像这样调用目标两次:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><project basedir="."  default="echoIt" name="precompile">
<property name="charset" value="utf-8"/>

<target name="echoIt">
</target>



<target name="precompile-templates0" depends="echoIt">
<property name="outputJS" value="../../jsp/jsp_1/js/templates0.js"/>
<property name="templatesPath" value="../../jsp/jsp_1/js/tmpl"/>

<java dir="${basedir}" failonerror="true" fork="true" jar="../../lib/js.jar">
<arg value="../../otherFiles/lib/rhino-handlebars-compiler.js"/>
<arg value="--handlebars"/>
<arg value="../../otherFiles/third-party/handlebars-v1.3.0.js"/>
<arg value="--templates"/>
<arg value="${templatesPath}"/>
<arg value="--output"/>
<arg value="${outputJS}"/>
</java>
<echo>Template Precompiled to web/js/compiled-templates.js</echo>
<echo> is now ready to compress....</echo>
</target>

<target name="precompile-templates1" depends="echoIt">
<property name="outputJS" value="../../jsp/jsp_2/js/templates1.js"/>
<property name="templatesPath" value="../../jsp/jsp_2/js/tmpl"/>
<echo> is now precompiling the second one </echo>
<java dir="${basedir}" failonerror="true" fork="true" jar="../../lib/js.jar">
<arg value="../../otherFiles/lib/rhino-handlebars-compiler.js"/>
<arg value="--handlebars"/>
<arg value="../../otherFiles/third-party/handlebars-v1.3.0.js"/>
<arg value="--templates"/>
<arg value="${templatesPath}"/>
<arg value="--output"/>
<arg value="${outputJS}"/>
</java>
<echo>Template Precompiled to web/js/compiled-templates.js</echo>
<echo> is now ready to compress....</echo>
</target></project>

控制台输出如下:

 Buildfile:   F:\AffirmedNetworks\ServerAutomation\cache\subBuildTarget\precompileTarget.xml
echoIt:
precompile-templates0:
[echo] Template Precompiled to web/js/compiled-templates.js
[echo] is now ready to compress....
echoIt:
precompile-templates1:
[echo] is now precompiling the second one
[echo] Template Precompiled to web/js/compiled-templates.js
[echo] is now ready to compress....
BUILD SUCCESSFUL
Total time: 2 seconds

可以看到,构建成功了。但是,当我检查预期目录中的输出时,路径中仅生成了“templates0.js”:jsp/jsp_1/js/。路径:jsp/jsp_2/js/中没有任何内容。但是,该文件夹中应该有名为“templates1.js”的文件。这实在是太奇怪了。没有发生错误,第一个 on 生成成功,但第二个消失了。有人可以给我一些帮助吗?谢谢!

最佳答案

问题在于您重复使用 <property>任务!

Properties不可变的: 无论谁先设置属性,都会在构建的其余部分卡住它;它们绝对不是变量。即一旦您使用 <property>标识符赋值,无法更改。请参阅HERE

尽管如此,您将值设置为 outputJStemplatesPath分别在两个目标中,可能假设/期望本地范围,但 ant 中的情况并非如此。

  • 原因: 一般来说,属性具有全局范围,即一旦定义了它们,它们就可用于随后调用的任何任务或目标
  • 异常(exception): 无法在通过 ant、antcall 或 subant 任务创建的子构建进程中设置属性并使其可供调用构建进程使用

因此,outputJS 的值和templatesPath ,如目标 precompile-templates0 中所定义,在整个构建过程中保留

要解决您的问题,您可以执行以下任一操作:

  • 更改属性名称,例如目标 precompile-templates1 中的 outputJS1templatesPath1
  • (如果您使用 Ant 1.8.0 或以上)请使用 <local>任务而不是 <property>声明任务outputJStemplatesPath 。请参阅HERE为此。
  • 使用 <var> ant-contrib的任务。请参阅ant-contribvar task .

关于java - 尝试多次调用 ANT 目标时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24855910/

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