0

我正在尝试编写一个 ant 目标,它将基于一堆 java 文件和一些属性文件创建一个 jar,但是在包含当前项目设置方式的属性文件时遇到了麻烦。

这些是我的蚂蚁目标:

1 - 从“myjar.src”文件夹编译 java 源文件,并将生成的类放入“myjar.classes”文件夹。完成后,将所有非 .java 文件从“myjar.src”复制到“myjar.classes”。

2 - 使用 basedir = ${myjar.classes} 使用“jar”命令创建 jar 并告诉它包含所有内容。

这些是我想要的蚂蚁目标:

1 - 编译 java 源文件并将生成的类放入“myjar.classes”文件夹。仅包含 .java 文件

2 - 使用 basedir = ${myjar.classes.location} 使用“jar”命令创建 jars,但还包括“myjar.src”中的 .properties 和 .xml 文件。

关键的区别是,当我使用 basedir = ${myjar.classes} 打包“myjar.classes”中的类时,我希望包含“myjar.src”中的属性和 xml 文件 - 我如何在这些文件中包含它们不在“myjar.classes”下面?

这是我要修改的蚂蚁目标:

<CreateManifest title="myjar classes etc"/>
        <jar 
            destfile="${myProject.build.jars.dir}\ta_test_driver.jar" 
            basedir="${myjar.classes}" 
            manifest="${manifest}">
            <include name="**"/>
        </jar>

我不只是为 basedir 使用上一级目录的原因是项目中的其他 jar 创建调用都没有这样做,我很犹豫是否只为这个进行更改。我确实尝试过这样做,但是在指定正确的目录时遇到了麻烦。(还有其他 jars 使用类似的目录结构,我现在或将来都不想干扰它们。)我只是想知道这些是否是更好的方法?非常感谢。

4

1 回答 1

1

我设法从这里解决了这个问题:How to include file in Jar through Ant at specific location

最后这是我修改后的 ant 调用:

    <CreateManifest title="myjar classes etc"/>
    <jar 
        destfile="${myProject.build.jars.dir}\ta_test_driver.jar" 
        basedir="${myProject.classes}\ta_test_driver" 
        manifest="${manifest}">
        <include name="**"/>
         <zipfileset dir="${myjar.src}" 
            includes="**/*.xml, **/*.properties, **/*.gif"
            />   
    </jar>

注意zipfileset标签。

于 2014-09-11T11:50:03.927 回答