Javascript Can';t访问由导入的ANT目标中的脚本生成的属性
我要做的是编译成一个文件,它从源文件中的一个常量获取它的版本 我有这样的设置(或至少是有效位): tasks/compile.xmlJavascript Can';t访问由导入的ANT目标中的脚本生成的属性,javascript,apache,ant,properties,Javascript,Apache,Ant,Properties,我要做的是编译成一个文件,它从源文件中的一个常量获取它的版本 我有这样的设置(或至少是有效位): tasks/compile.xml <project name="Compile"> <target name="check.version"> <script language="javascript"> regex = /VERSION.+?"([\d\.]+)";/; r = new j
<project name="Compile">
<target name="check.version">
<script language="javascript">
regex = /VERSION.+?"([\d\.]+)";/;
r = new java.io.BufferedReader(new java.io.FileReader(new java.io.File(file)));
line = r.readLine();
while ( (line = r.readLine()) != null) {
m = regex.exec(line);
if (m) {
project.setProperty( "project.version" , m[1] );
break;
}
}
r.close();
</script>
<echo>${ant.project.name}-${project.version}</echo> <!-- = Fail-0.2 -->
</target>
</project>
regex=/VERSION.+?“([\d\.]+)”;/;
r=newjava.io.BufferedReader(new java.io.FileReader(new java.io.File(File));
line=r.readLine();
而((line=r.readLine())!=null){
m=regex.exec(行);
如果(m){
project.setProperty(“project.version”,m[1]);
打破
}
}
r、 close();
${ant.project.name}-${project.version}
和build.xml:
<project name="Fail">
<import file="${basedir}/build/tasks/compile.xml"/>
<target name="test">
<antcall target="check.version">
<param name="file" value="${basedir}/Source.as"/>
</antcall>
<echo>${project.version}</echo> <!-- = ${project.version} -->
<echoproperties></echoproperties>
</target>
</project>
${project.version}
因此,脚本设置的属性似乎仅在该目标中本地定义,如果我在同一项目(“Compile”)中指定另一个目标,它也不会知道该属性
我还尝试在“Compile”项目xml中设置一个,但它无论如何不会被目标覆盖
那么如何访问脚本生成的属性呢?或者有没有其他方法来做这样的事情
我真的希望将这一部分保存在单独的xml中,因为它使项目构建脚本更加清晰
谢谢 如果通过
antcall
调用另一个目标,则在该目标中设置的属性将不在调用方的范围内
如果需要访问另一个目标设置的属性,可以将该目标声明为依赖项,以确保它在目标之前执行。像这样:
<target name="test" depends="check.version">
<echo>${project.version}</echo> <!-- = value set in check.version -->
<echoproperties></echoproperties>
</target>
${project.version}
编辑:还有一项任务可从和获得: AntCallBack与 标准的“antcall”任务,除了 它允许在被调用的 要在调用中可用的目标 目标
另外,你知道有什么IRC频道(有人在里面)可以问蚂蚁相关的问题吗?太好了!但由于我无法将参数传递到依赖项(或者我可以吗?),所以我只需查找一个属性即可。谢谢编辑答案,添加Ant Contrib提供的
antcallback
任务。