代码之家  ›  专栏  ›  技术社区  ›  Ittai

如何将Java源复制到Ant Javac文件夹

  •  4
  • Ittai  · 技术社区  · 15 年前

    我知道如何使用Ant来复制文件和文件夹,但我感兴趣的是,我是否以及如何让javac任务复制它编译到输出目录的相同源代码。

    基本上,它非常类似于在JAR任务中包含源代码的选项。

    2 回复  |  直到 10 年前
        1
  •  2
  •   tonio    15 年前

    为什么不简单地使用 copy 任务,以及 javac 一个?

    甚至可以使用Ant的宏定义自己的 copyingjavac 任务,执行这两个操作,唯一的问题是正确处理文件集,以准确复制正在编译的文件集。

    如果只想在编译成功时复制一个文件,则必须构建一个自定义的Ant任务(扩展默认的javac任务),或者在每个任务中使用Ant-Contrib。

    macrodef可能看起来像:

    <macrodef name="copyingjavac">
      <attribute name="srcdir"/>
      <attribute name="destdir""/>
      <element name="arginclude"/>
      <sequential>
        <javac srcdir="@{srcdir}" destdir="@{destdir}" updatedProperty="build.success">
           <arginclude/>
        </javac>
        <copy todir="@{destdir}">
          <fileset dir="@{srcdir}">
            <arginclude/>
          </fileset>
        </copy>
        <fail unless="build.success">
          Build failed. Check the output...
        </fail>
      </sequential>
    </macrodef>
    
        2
  •  2
  •   Renaud    13 年前

    我在Ant网站上找到了这个答案(你可以删除“排除”部分来复制编译版本中的.java源代码):

    ...
    <target name="compile">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
        <copy todir="${classes.dir}">
            <fileset dir="${src.dir}" excludes="**/*.java"/>
        </copy>
    </target>
    ...
    

    这将复制所有资源(只要它们没有后缀“.java”)到构建目录,这样我们就可以从那个目录启动应用程序,这些文件将被包含到jar中。

    推荐文章