Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
第一个Ant build.xml文件未编译为检测错误和其他Ant问题_Ant - Fatal编程技术网

第一个Ant build.xml文件未编译为检测错误和其他Ant问题

第一个Ant build.xml文件未编译为检测错误和其他Ant问题,ant,Ant,我正试图为一个刚刚从Netbeans迁移过来的已建立的java项目编写我的第一个build.xml文件 答:我试图实现的目标非常简单: 使用下面的“dest”目标,将所有源文件(1个包中共4个)复制到我尝试创建的src/test。源文件被复制到了“src/test”目录,但是在“src/test”目录中也创建了一个“test”目录,为什么我不确定 使用下面的“jar”目标,创建一个包含包名目录下所有类文件的jar——根本不起作用 使用“compile”目标来确保所有代码都已成功编译,但我遇到了很

我正试图为一个刚刚从Netbeans迁移过来的已建立的java项目编写我的第一个build.xml文件

答:我试图实现的目标非常简单:

  • 使用下面的“dest”目标,将所有源文件(1个包中共4个)复制到我尝试创建的src/test。源文件被复制到了“src/test”目录,但是在“src/test”目录中也创建了一个“test”目录,为什么我不确定

  • 使用下面的“jar”目标,创建一个包含包名目录下所有类文件的jar——根本不起作用

  • 使用“compile”目标来确保所有代码都已成功编译,但我遇到了很多错误。代码在Eclipse中进行了清理并成功构建,因此我不确定ANT脚本中的错误是什么,我注意到它试图编译“8”文件,而实际上只有“4”文件。不确定其他4个是从哪里来的,尽管它表示重复。关于丢失符号显示的错误似乎是指有关构建路径中包含的所需项目的导入语句,因此我不确定如何解决ANT在编译过程中提出的问题

  • B.这是我第一次尝试创建我的第一个build.xml文件,但我遇到了如下所示的问题:

    <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自动创建的构建。你的回答解决了我的问题。我感谢你的帮助和时间。问候。