gpt4 book ai didi

ant - 在 Ant 中创建一个空的占位符文件集

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

因此,情况如下:我有一个定义编译任务的父构建文件,并且我希望子构建文件能够有选择地向该编译任务使用的类路径添加更多 JAR(可以是任何地方)。

并不是所有的子构建文件都会有这些额外的依赖,所以我不想强制他们定义额外的依赖文件集。他们应该能够包含父级,并且编译任务应该可以正常工作。

(显然还有其他必需的属性来配置源目录等,但它们没有进入这个。此外,实际的包含/继承问题要复杂一些,但希望简单的事情是正确的case 也适用于复杂的情况。)

我有一些有用的东西:父构建文件中的编译任务是指附加的依赖文件集,无论:

<target name="compile" depends="init-additional-dependencies">
<fileset id="global.dependency.fileset" dir="${global.library.directory}">
<include name="**/*.jar"/>
</fileset>
<javac ...>
<classpath>
<!-- should be the same for all buildfiles -->
<fileset refid="global.dependency.fileset"/>

<!-- should be populated by child buildfiles -->
<fileset refid="additional.dependency.fileset"/>
</classpath>
</javac>
</target>

...并且父构建文件也有一个创建这个文件集的任务,空的,所以 javac 不会爆炸。但是,我创建空文件集的方式是愚蠢的:
<target name="init-additional-dependencies">
<!-- override me! -->
<fileset id="additional.dependency.fileset" dir=".">
<include name="placeholder.does.not.exist.so.fileset.is.empty"/>
</fileset>
</target>

这可行,但看起来很愚蠢,很难相信没有更好的方法。那更好的方法是什么?

最佳答案

我认为对此没有太多讨论,因此不存在这样的“约定”。文件集的工作方式虽然排除了“王牌”包含,因此

<fileset refid="additional.dependency.fileset" dir="." excludes="**" />

应始终为空。这似乎比您的占位符文件名技术、占位符目录名和 erroronmissingdir 更可取。方法。

出现问题的原因是,默认情况下,文件集的父目录下的所有文件都隐含包含在内。另一种选择 - 在您的情况下可能不直接使用 - 是使用 filelist 反而。因为文件列表是由显式命名的文件构成的,所以如果你不命名任何文件,它们就是空的。
<filelist id="additional.dependency.filelist" />

通过概括,您可以混合文件集和文件列表,如果您修改类路径以使用 resources :
<filelist id="additional.dependency.resources" />

...

<classpath>
<!-- should be the same for all buildfiles -->
<fileset refid="global.dependency.fileset"/>

<!-- should be populated by child buildfiles -->
<resources refid="additional.dependency.resources"/>
</classpath>

引用 additional.dependency.resources可以是文件集或文件列表(包括空文件列表),或任何其他 file-based resource collection .

关于ant - 在 Ant 中创建一个空的占位符文件集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9023890/

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