gpt4 book ai didi

Ant:如何测试目标是否存在(如果不存在则不调用)?

转载 作者:行者123 更新时间:2023-12-04 20:21:25 27 4
gpt4 key购买 nike

我有一组构建文件,其中一些调用其他文件——首先导入它们。行尾构建可能有也可能没有特定目标(例如“copyother”)。如果该目标是在行尾构建脚本中定义的,我想从我的主构建文件中调用它。我该怎么做?

调用脚本的一部分:

<!-- Import project-specific libraries and classpath -->
<property name="build.dir" value="${projectDir}/build"/>
<import file="${build.dir}/build_libs.xml"/>

...

<!-- "copyother" is a foreign target, imported in build_libs.xml per project -->
<target name="pre-package" depends=" clean,
init,
compile-src,
copy-src-resources,
copy-app-resources,
copyother,
compile-tests,
run-junit-tests"/>

我不希望每个项目都定义“copyother”目标。如何进行有条件的 Ant 调用?

最佳答案

我猜您没有将“其他”构建脚本导入到您的主 bu​​ild.xml 中。 (因为那行不通。Ant 将导入视为本地。)

同时,您使用的是depends 而不是ant/ant 调用,所以也许您正在导入它们,但一次一个。

你不能在原生 Ant 中做你想做的事。正如您所指出的,测试文件很容易,但目标则不然。特别是如果其他项目尚未加载。您肯定必须编写自定义 Ant 任务来完成您想要的任务。两个途径:

1) 调用 project.getTargets() 并查看您的目标是否在那里。这涉及重构您的脚本以使用 ant/antcall 而不是纯粹的依赖,但感觉不像是一个黑客。编写自定义 Java 条件并不难,Ant 手册中有一个示例。

2) 将目标添加到当前项目(如果尚不存在)。新目标将是一个空操作。 [不确定这种方法是否有效]

关于Ant:如何测试目标是否存在(如果不存在则不调用)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6142937/

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