使用路径而不是文件集复制任务



我使用Ant 1.7,希望从不同的路径复制文件(它们没有关系,所以我不能使用include选择器将它们从根目录中过滤出来)。我尝试使用<copy>内的<path>而不是<fileset>,因为使用<path>,我可以指定<fileset>中不可能的多路径。我的ant脚本看起来像这样,但是它不起作用。

<target name="copytest">
    <!-- copy all files in test1 and test2 into test3 -->
    <copy todir="E:/test3">
        <path>
            <pathelement path="C:/test1;D:/test2"></pathelement>
        </path>
    </copy>
</target>

有人知道如何在<copy>中使用<path>吗?或者有人有关于如何从不同的源没有选择器复制文件的建议?

顺便说一句,我不想硬编码源目录,它们将从属性文件中读取,所以在<copy>中写入多个<fileset>不应该被考虑。

提前感谢!

这只适用于flatten属性设置为true:

<copy todir="E:/test3" flatten="true">
    <path>
        <pathelement path="C:/test1;D:/test2"></pathelement>
    </path>
</copy>

这在Ant Copy任务文档的Examples部分中有记录。

<pathelement>通常使用它的path属性作为classpath或其他预定义位置的引用,如果您想在类路径之外给出特定的文件位置尝试使用location属性

<pathelement location="D:libhelper.jar"/>

location属性指定一个相对的文件或目录到项目的基目录(或绝对文件名),而属性接受以冒号或分号分隔的的位置。path属性用于预定义的路径——在任何情况下,都是带有location属性的多个元素

我们也有同样的问题

稍微复杂一点,我们需要为从路径

转换的每个文件集添加指定的模式集

例如,这是传入数据

<path id="myDirList" path="C:/test1;D:/test2" />
<patternset id="myPatterns" includes="*.html, *.css, etc, " />

我们写了一个脚本来解决这个问题

<resources id="myFilesetGroup">
    <!-- mulitiple filesets to be generated here 
    <fileset dir="... dir1, dir2 ...">
        <patternset refid="myPatterns"/>
    </fileset>
    -->
</resources>
<script language="javascript"><![CDATA[
    (function () {
        var resources = project.getReference("myFilesetGroup");
        var sourceDirs = project.getReference("myDirList").list();
        var patterRef = new Packages.org.apache.tools.ant.types.Reference(project, "myPatterns");
        for (var i = 0; i < sourceDirs.length; i++) {
            var fileSet = project.createDataType("fileset");
            fileSet.dir = new java.io.File(sourceDirs[i]);
            fileSet.createPatternSet().refid = patterRef;
            resources.add(fileSet);
        }
    })();
]]></script>

现在您可以在复制任务

中使用这些资源
<!-- copy all files in test1 and test2 into test3 -->
<copy todir="E:/test3">
    <resources refid="myFilesetGroup">
</copy>
I tried this and works fine
<fileset file="${jackson.jaxrs.lib}"/>

相关内容

  • 没有找到相关文章