如何将包含属性文件的目录添加到Ant build.xml?

esp*_*eed 4 java ant build

我正在尝试用ant构建一个“ uberjar”,并且该项目有一个包含几个属性文件的config目录。

如何将配置目录添加到build.xml?

这是一个如何被引用的例子:

static private String CONFIG_DIR = "config/";
static public String CONFIG_FILE = "proj.properties";

File configFile = new File(CONFIG_DIR, CONFIG_FILE);
Run Code Online (Sandbox Code Playgroud)

config目录中有多个属性文件。通常我只是将其添加到类路径中:

java -classpath bin:lib/*:config some.project.Example
Run Code Online (Sandbox Code Playgroud)

这是我的build.xml目标,它不太正确:

<target name="uberjar" depends="compile">
  <jar jarfile="${babelnet.jar}">
    <fileset dir="${bin.dir}">
      <include name="**/*.class"/>
    </fileset>
    <zipgroupfileset dir="lib" includes="*.jar"/>
  </jar>
  <copy todir="config">
    <fileset dir="config">
      <include name="**/*.properties"/>
    </fileset>
      </copy>
</target>
Run Code Online (Sandbox Code Playgroud)

Chr*_*ert 5

要将属性文件包括在新的jar文件中,可以<fileset><jar>任务添加另一个嵌套。

<target name="uberjar" depends="compile">
  <jar jarfile="${babelnet.jar}">
    <fileset dir="${bin.dir}">
      <include name="**/*.class"/>
    </fileset>
    <zipgroupfileset dir="lib" includes="*.jar"/>
    <fileset dir="${basedir}">
      <include name="config/*.properties"/>
    </fileset>
  </jar>
</target>
Run Code Online (Sandbox Code Playgroud)

另外,请参见stackoverflow问题:如何从jar文件读取文件?

  • 如果必须使用Java [`File`](http://docs.oracle.com/javase/6/docs/api/java/io/File.html)对象,则将无法读取属性jar文件中的文件。 (2认同)