【问题标题】:How to use Ant include non-java resource files with compiled classes如何使用 Ant 将非 java 资源文件包含在已编译的类中
【发布时间】:2015-09-25 16:32:42
【问题描述】:

我有一个 Java 项目,所有源文件都在 src 文件夹中。这个 src 文件夹包含几个包。其中一些包/文件夹不包含任何 Java 代码。它们只包含一些我在应用程序中用作图标的图像。

目录结构类似如下。

src/
com/
   example/
       pk1/     # This contains only some Java files.
       pk2/     # This will contain some XML and Java code.
       im1/     # This subfolder will contain just the images

现在,当我使用javac 任务时,它会将所有Java 文件编译为类文件并将它们存储在我指定的目标目录中。但是,非 java 文件仍保留在源文件夹中。

我在 SO 上提到了这个 Question。但是,我认为在我的情况下,我想将所有非 Java 资源文件(无需明确指定要移动的文件)自动包含到 build 目录(包含所有类文件的目录)中,同时遵循相同的目录结构与源代码相同。

如果我遗漏了一些非常琐碎的事情,请原谅我,但是我该如何让 Ant 这样做呢?

【问题讨论】:

    标签: java ant


    【解决方案1】:

    使用 ant copy 任务将您的资源复制到 classes 目录(或存储您的 .class 文件的任何位置)。默认情况下,ant 保持目录结构。

    例如:

    <copy todir="classes">
      <fileset dir="com/example">
        <exclude name="**/*.java"/>
      </fileset>
    </copy>
    

    【讨论】:

      【解决方案2】:

      只是为了完成上一个答案,块

      <copy todir="classes">
        <fileset dir="com/example">
          <exclude name="**/*.java"/>
        </fileset>
      </copy>
      

      在任务 javac 之前进行

      <javac [...]
      

      在目标内部编译

      <target name="compile" [...]
      

      然后

      <target name="compile" [...]>
         <copy todir="&&&" [...]>
             [...]
         </copy>
      
         <javac srcdir="[...]" destdir="&&&" >
         </javac>
      </target>
      

      在我的例子中,标签“copy”的属性“todir”与标签“javac”的属性“destdir”相同;我想详细说明答案,以便尽快为您提供解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-20
        • 2020-04-03
        • 2019-08-31
        • 2020-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多