第一个Ant build.xml文件未编译为检测错误和其他Ant问题
我正试图为一个刚刚从Netbeans迁移过来的已建立的java项目编写我的第一个build.xml文件 答:我试图实现的目标非常简单:第一个Ant build.xml文件未编译为检测错误和其他Ant问题,ant,Ant,我正试图为一个刚刚从Netbeans迁移过来的已建立的java项目编写我的第一个build.xml文件 答:我试图实现的目标非常简单: 使用下面的“dest”目标,将所有源文件(1个包中共4个)复制到我尝试创建的src/test。源文件被复制到了“src/test”目录,但是在“src/test”目录中也创建了一个“test”目录,为什么我不确定 使用下面的“jar”目标,创建一个包含包名目录下所有类文件的jar——根本不起作用 使用“compile”目标来确保所有代码都已成功编译,但我遇到了很
<project name="ThalesDataGenerator" basedir="." default="clean-build">
<property name="src.dir" value="src"/>
<property name="dest.dir" value="${src.dir}/test"/>
<property name="dist.dir" value="dist"/>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir" value="${build.dir}/${ant.project.name}"/>
<property name="main-class" value="thalesdatagenerator.ThalesDataGenerator"/>
<target name="clean">
<delete dir="${build.dir}"/>
<delete dir="${dest.dir}"/>
</target>
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}"/>
</target>
<target name="dest">
<mkdir dir="${dest.dir}"/>
<copy todir="${dest.dir}">
<fileset dir="${src.dir}" includes="**"/>
</copy>
</target>
<target name="jar" depends="compile">
<mkdir dir="${jar.dir}"/>
<jar destfile="${jar.dir}/ThalesDataGenerator.jar" basedir="${build.dir}">
<manifest>
<attribute name="Main-Class" value="${main-class}"/>
</manifest>
</jar>
</target>
<target name="run" depends="jar">
<java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/>
</target>
<target name="clean-build" depends="clean,dest,jar,run"/>
</project>
以下是我得到的错误:
- >构建文件:C:\ATMSwitch\ThalesDataGenerator\build.xml clean:
- >[删除]删除目录C:\ATMSwitch\ThalesDataGenerator\build
- >目的地:
- >[mkdir]已创建目录:C:\ATMSwitch\ThalesDataGenerator\src\test
- >[复制]将4个文件复制到C:\ATMSwitch\ThalesDataGenerator\src\test
- >[copy]将2个空目录复制到C:\ATMSwitch\ThalesDataGenerator\src\test下的1个空目录
- >汇编:
- >[mkdir]已创建目录:C:\ATMSwitch\ThalesDataGenerator\build\classes
- >[javac]C:\ATMSwitch\ThalesDataGenerator\build.xml:22:警告:未设置“includeantruntime”,默认为 build.sysclasspath=last;对于可重复的生成,将其设置为false
- >[javac]将8个源文件编译为C:\ATMSwitch\ThalesDataGenerator\build\classes
- >[javac]C:\ATMSwitch\ThalesDataGenerator\src\ThalesDataGenerator\ISOUtil.java:36: 重复类:thalesdatagenerator.ISOUtil
- >[javac]C:\ATMSwitch\ThalesDataGenerator\src\test\ThalesDataGenerator\ThalesDataGenerator.java:13: 包common.database不存在
- >[javac]导入common.database.database
- >[javac]^
- >[javac]C:\ATMSwitch\ThalesDataGenerator\src\test\ThalesDataGenerator\ThalesSystem.java:13: 包com.sharpbancsystems.atmterminals.thales不存在
- >[javac]注意:C:\ATMSwitch\ThalesDataGenerator\src\test\ThalesDataGenerator\ThalesDataGenerator.java 使用未经检查或不安全的操作
- >[javac]注意:使用-Xlint重新编译:未选中以获取详细信息
- [javac]18个错误
- 构建失败
- C:\ATMSwitch\ThalesDataGenerator\build.xml:22:编译失败;有关详细信息,请参阅编译器错误输出
- 总时间:874毫秒
任何帮助/指导都将不胜感激。问候。让我们一次看一个: 一些提示:
- 定义属性时使用
。例如,${basedir}
而不是简单地value=“src”/>
- 不要强制将清理作为默认目标的一部分。标准默认目标应该构建jar,仅此而已。执行清理会使您重复可能不需要的工作。您可以使用名为
的目标来清理、构建和执行all
- 如上所述,使用默认目标名称
清理生成,使用clean
运行生成中的所有目标。两者都不应是默认目标all
现在回到您的问题。您的
目标如下所示:
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}"/>
</target>
<target name="compile">
<mkdir dir="${classes.dir}"/>
<path id="compile.classpath">
<fileset dir="${basedir}/lib">
<include name="**/*.jar"/>
</fileset>
</path>
<javac srcdir="${src.dir}"
classpathref="compile.classpath"
destdir="${classes.dir}"/>
</target>
有很多方法可以做到这一点,但从语法上来说,这是最简单的。我使用
定义一个compile.claasspath,其中包含我需要的所有jar。因为它们都位于lib
目录中,所以非常简单
接下来,在编译Java代码时,我使用classpathref参数指定这个类路径
这将编译类(现在还没有发生)。由于编译目标失败,Ant构建在调用
任务之前就结束了。让编译开始工作应该允许构建的其余部分工作。发生在我身上。这是因为我没有将selenium-server-standalone-3.4.0.jar复制到我的C:\jars dir(ws.jars)中谢谢你,大卫。我非常感谢你回复中的所有精彩信息。我会改变它,希望它能起作用。问候。@Melinda-Eclipse文件夹中可能有一组位于不同目录中的JAR。看看你是否能追踪到这些JAR以及它们在你的系统中的位置。请参阅中的,以了解如何使用pathelement sub enti绑定以创建路径。您正在名为${dest}
的src文件夹下复制源文件,然后要求编译所有文件。为什么要将源文件复制到${src.dir}/测试
?去掉源文件的副本,你会没事的。对不起,大卫。我想我在这里陷入了困境。我感谢你的帮助。我需要解决这个问题。谢谢你的帮助。我试图模仿NB自动创建的构建。你的回答解决了我的问题。我感谢你的帮助和时间。问候。