我想创建一个Ant构建文件,其中包含一些文件作为一种插件。
因此,如果我想激活项目中的一个特性--比如说pmd检查--我在一个目录中复制一个pmd.xml,然后build.xml就会启动这个想法,即pmd.xml存在并导入它,这样新的目标就可以用于构建。
但是“import”任务只能用作顶级任务,所以我不知道如何实现这个功能。使用Ant可以做到这一点吗?如果可以,我该如何做到呢?
编辑:我更喜欢一个解决方案,允许新的目标出现在ant -p提供的列表中。
发布于 2011-01-09 22:45:28
在导入任务文档中没有明确说明,但是任务接受文件集作为单个文件的替代。因此,在顶层,这应该能起到作用,创建的目标由ant -p列出
<property name="plugins.dir" value="plugins" />
<fileset id="plugin.modules" dir="${plugins.dir}">
<include name="**/*.xml" />
</fileset>
<import>
<fileset refid="plugin.modules" />
</import>其中的一个问题是,“plugins”目录中必须至少有一个插件,否则导入将失败。您可以只创建一个名为empty.xml的占位符文件
<project />完成后,您只需将任何新插件放入插件目录中,它们将在以后的构建中导入。
发布于 2008-11-13 00:44:54
您可以使用任务,甚至可以参数化目标名称。下面是一个例子:
<ant antfile="plugins/pmd.xml" target="${pmd-target}"/>如果你想要更多的灵活性,我推荐使用gant或gradle。
发布于 2008-11-13 02:42:13
在import任务的文档中,请注意optional属性。将其设置为true,缺少includes不会破坏构建。
因此,如果找到pmd.xml,则会将其包括在内,但如果未找到,则不会破坏构建。
没有经过测试,所以我不确定ant -p是否会在导入的文件中包含目标,如果找到的话。
https://stackoverflow.com/questions/285866
复制相似问题