使用Ant编译Java代码

3

我对使用ant还有些陌生,目前我制作ant脚本的方法是通过eclipse自动生成,以生成可运行的jar文件。但问题在于它只读取bin目录。因此,如果我更改了一个java源文件,就无法在ant构建中看到变化。我需要在ant脚本中添加什么?下面是一个示例脚本:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <project default="create_run_jar" name="Create Runnable Jar for Project poodah">
    <!--this file was created by Eclipse Runnable JAR Export Wizard-->
    <!--ANT 1.7 is required                                        -->
    <target name="create_run_jar">
        <jar destfile="../lib/TestMaster.jar" filesetmanifest="mergewithoutmain">
            <manifest>
                <attribute name="Main-Class" value="test.startup.TestMaster"/>
                <attribute name="Class-Path" value="."/>
            </manifest>
            <fileset dir="../test/bin"/>
        </jar>
    </target>
    </project>

我尝试阅读了一些文档,但有点晦涩难懂。

你需要知道,Eclipse会自动编译更改过的源代码(/src)并将其放在/bin目录下;它甚至会将其他(非Java)文件从/src复制到/bin。这样/bin文件夹始终是最新的。只要你在Eclipse中进行更改。看起来你尝试在Eclipse之外做一些更改。在这种情况下,你需要像其他人建议的那样拥有一个独立的build.xml文件。 - Cebence
3个回答

8

您需要使用javac ant任务编译您的源代码。

假设您的项目结构如下:

java
  your
    package
      structure
         SomeClass.java
lib
  log4j.jar
  guava-14.jar
test
  bin

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="create_run_jar" name="Create Runnable Jar for Project poodah">
  <!--this file was created by Eclipse Runnable JAR Export Wizard-->
  <!--ANT 1.7 is required                                        -->
  <target name="create_run_jar" depends="compile">
      <jar destfile="../lib/TestMaster.jar" filesetmanifest="mergewithoutmain">
          <manifest>
              <attribute name="Main-Class" value="test.startup.TestMaster"/>
              <attribute name="Class-Path" value="."/>
          </manifest>
          <fileset dir="../test/bin"/>
      </jar>
  </target>

  <target name="compile">
    <javac srcdir="java" destdir="../test/bin" includes="**/*.java" target="1.6">

        <classpath refid="classpath.base" />
    </javac>

  </target>
  <!-- Libraries on which your code depends -->
  <path id="classpath.base">                                                                                                                           
     <fileset dir="lib">                                                                                                                          
         <include name="**/*.jar" />                                                                                                          
     </fileset>                                                                                                                                   
  </path>  
</project>

0

将您的编译目标添加为依赖项

<target name="create_run_jar" depends="compile">
    <jar destfile="../lib/TestMaster.jar" filesetmanifest="mergewithoutmain">
        <manifest>
            <attribute name="Main-Class" value="test.startup.TestMaster"/>
            <attribute name="Class-Path" value="."/>
        </manifest>
        <fileset dir="../test/bin"/>
    </jar>
</target>
</project>

编译目标

<target name="compile" depends=""   description="compile the java source files">  
 <javac srcdir="." destdir="../test/bin">  
    <classpath>  
        <fileset dir="${lib}">  
            <include name="**/*.jar" />  
        </fileset>  
       </classpath>  
</javac>  

0
你需要在你的Ant脚本中添加一个<javac>任务。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接