【问题标题】:How to add a directory containing properties files to an Ant build.xml?如何将包含属性文件的目录添加到 Ant build.xml?
【发布时间】:2012-08-14 00:35:35
【问题描述】:

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

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

这是一个如何引用它的示例:

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

File configFile = new File(CONFIG_DIR, CONFIG_FILE);

config 目录中有多个属性文件。通常我会把它添加到类路径中:

java -classpath bin:lib/*:config some.project.Example

这是我的 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>

【问题讨论】:

  • 您应该考虑将文件作为资源从类路径加载:stackoverflow.com/questions/3294196/…
  • 如果可能,我不想修改代码——这是我正在评估的外部项目。
  • @espeed:您是否尝试将属性文件添加到 jar 中的配置目录?
  • 是的,所以它可以在 jar 中访问。
  • 无法使用 new File() 访问 jar 文件中的任何内容 ...,如果您不想更改代码,则需要将这些文件与 jar 分开跨度>

标签: java ant build


【解决方案1】:

要在新的 jar 文件中包含属性文件,您可以将另一个嵌套的 &lt;fileset&gt; 添加到 &lt;jar&gt; 任务中。

<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>

另外,请参阅 stackoverflow 问题:How to read a file from a jar file?

【讨论】:

  • 我试过了,但是new File(CONFIG_DIR, CONFIG_FILE); 没有找到文件。
  • @espeed:查看 How to read a file from a jar file? 的链接
  • 谢谢。我正在尝试在不修改项目代码的情况下完成这项工作——这是一个外部项目。
  • 如果您必须使用 Java File 对象,那么您将无法从 jar 文件中读取属性文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 2015-10-07
  • 1970-01-01
  • 2011-04-13
  • 2023-04-04
  • 2013-11-18
相关资源
最近更新 更多