Подтвердить что ты не робот

Ant build failed: "Target" build..xml "не существует"

Когда я запускаю файл ant в подробном режиме, я получил ошибку, подобную приведенной ниже. Кто-нибудь есть идеи, что происходит не так? Я новичок в этом

antlib:org.apache.tools.ant] Could not load definitions from resource org/apach
e/tools/ant/antlib.xml. It could not be found.
Override ignored for property "java.home"
BUILD FAILED
Target "build.xml" does not exist in the project "MYPROJECT".
        at org.apache.tools.ant.Project.tsort(Project.java:1821)
        at org.apache.tools.ant.Project..topoSort(Project.java:1729)
        at org.apache.tools.ant.Project.topoSort(Project.java:1692)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
        at org.apache.tools.ant.Main.runBuild(Main.java:698)
        at org.apache.tools.ant.Main.startAnt(Main.java:199)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
Total time: 1 second

Это мой build.xml:

<project name="MYPROJECT" default="dev" basedir=".">
  <property name="build.home" value="build/jsp" />
  <property name="tomcat.home" location="../Tomcat 5.0/" />
  <path id="project.class.path">
    <fileset dir="./lib/">
      <include name="**/*.jar" />
    </fileset>
  </path>
  <target name="reltag">
    <tstamp>
      <format property="now" pattern="d MMM yyyy HH:mm" />
    </tstamp>
    <property name="reltag" value="Built date: ${now}" />
  </target>
  <target name="dev" depends="compile" description="Builds for development">
    <mkdir dir="jsp/WEB-INF/lib" />
    <mkdir dir="jsp/WEB-INF/classes" />
    <copy todir="jsp/WEB-INF/lib">
      <fileset dir="lib">
        <exclude name="**/CVS/*" />
      </fileset>
    </copy>
    <copy todir="jsp/WEB-INF/classes">
      <fileset dir="classes">
        <exclude name="**/CVS/*" />
      </fileset>
    </copy>
  </target>
  <target name="compile" depends="myproject-gen,reltag">
    <copy file="setup/Version.java.template" tofile="java/myproject/Version.java" overwrite="true">
      <filterset>
        <filter token="VERSION" value="${reltag}" />
      </filterset>
    </copy>
    <mkdir dir="classes" />
    <depend srcdir="java" destdir="classes" cache="depcache" />
    <javac srcdir="java" destdir="classes">
      <classpath refid="project.class.path" />
    </javac>
  </target>
  <target name="myproject-gen" description="Generates torque classes and SQL for myproject">
    <!-- generate the java files -->
    <ant dir="torque" target="om" />
    <antcall target="myproject-sql-mysql" />
  </target>
  <!-- generate the schema.sql script for MySQL -->
  <target name="myproject-sql-mysql" depends="myproject-sql-mysql-check" unless="mysql.schema.up.to.date">
    <echo message="Generating SQL file for MySQL" />
    <ant dir="torque" target="sql">
      <property name="torque.database" value="mysql" />
      <property name="torque.runOnlyOnSchemaChange" value="false" />
    </ant>
    <move file="sql/gen/myproject-schema.sql" tofile="sql/gen/myproject-schema-mysql.sql" overwrite="true" />
    <copy file="sql/gen/myproject-schema-mysql.sql" tofile="jsp/admin/database.sql" overwrite="true" />
    <copy file="sql/init.sql" tofile="jsp/admin/init.sql" overwrite="true" />
  </target>
  <!-- check if we need to generate the sql file -->
  <target name="myproject-sql-mysql-check">
    <uptodate property="mysql.schema.up.to.date" targetfile="sql/gen/myproject-schema-mysql.sql" srcfile="torque/myproject-schema.xml" />
  </target>
  <target name="myproject-war" depends="compile-jsp">
    <mkdir dir="build" />
    <jar destfile="build/myproject.war" basedir="build/jsp" />
  </target>
  <target name="prepare_for_war_file">
    <mkdir dir="build\jsp-classes\org\apache\jsp" />
    <!-- <move todir="${build.home}/WEB-INF/classes/org/apache/jsp"> <fileset dir="${build.home}"> <include name="*.jsp"/> </fileset> </move> -->
    <!-- copy everything which is not a jsp to admin directory -->
    <copy tofile="${build.home}/admin/database.sql">
      <fileset file="sql/gen/*-schema-mysql.sql" />
    </copy>
    <copy file="sql/init.sql" todir="${build.home}/admin" />
    <mkdir dir="${build.home}/pdb_files" />
    <!-- copy images directory -->
    <copy todir="${build.home}/images">
      <fileset dir="jsp/images" />
    </copy>
    <copy todir="${build.home}/hand">
      <fileset dir="jsp/hand" />
    </copy>
    <!-- copy javascript directory -->
    <copy todir="${build.home}/javascript">
      <fileset dir="jsp/javascript" />
    </copy>
    <!-- copy META-INF directory -->
    <copy todir="${build.home}/META-INF">
      <fileset dir="jsp/META-INF" />
    </copy>
    <!-- copy stylesheet directory -->
    <copy todir="${build.home}/stylesheet">
      <fileset dir="jsp/stylesheet" />
    </copy>
    <!-- copy WEB-INF directory -->
    <copy todir="${build.home}/WEB-INF/classes/">
      <fileset dir="classes/" includes="**" />
    </copy>
    <copy todir="${build.home}/WEB-INF/lib">
      <fileset dir="lib" includes="*.*" excludes="Cabwiz" />
    </copy>
    <!-- copy license and properties -->
    <!--<copy file="WebContent/myproject.license" todir="${build.home}"/> -->
    <copy file="jsp/myproject.properties" todir="${build.home}" />
    <!-- move jsp classes to the correct package structure so war file will work when deployed -->
    <move todir="${build.home}/WEB-INF/classes/org/apache/jsp">
      <fileset dir="${build.home}" includes="**/*.class" excludes="WEB-INF/**" />
    </move>
    <antcall target="create-web_XML"></antcall>
  </target>
  <target name="create-web_XML">
    <loadfile property="generated.web.xml" srcFile="jsp/WEB-INF/generated_web.xml" />
    <copy file="jsp/WEB-INF/web_template.xml" tofile="jsp/WEB-INF/web.xml.deployable" overwrite="true">
      <filterset begintoken="&lt;!--" endToken="--&gt;">
        <filter token="GENERATED_WEB_XML" value="${generated.web.xml}" />
      </filterset>
    </copy>
    <copy file="jsp/WEB-INF/web.xml.deployable" tofile="build/jsp/WEB-INF/web.xml" />
  </target>
  <target name="compile-jsp" depends="dev">
    <antcall target="prepare_for_war_file"></antcall>
    <property environment="env" />
    <taskdef classname="org.apache.jasper.JspC" name="jasper2">
      <classpath id="jspc.classpath">
        <pathelement location="${java.home}/../lib/tools.jar" />
        <fileset dir="${env.tomcat.home}/bin2">
          <include name="*.jar" />
        </fileset>
        <fileset dir="${env.tomcat.home}/server/lib">
          <include name="*.jar" />
        </fileset>
        <fileset dir="${env.tomcat.home}/common/lib">
          <include name="*.jar" />
        </fileset>
      </classpath>
    </taskdef>
    <mkdir dir="java/jsp-src" />
    <jasper2 validateXml="false" package="org.apache.jsp" uriroot="jsp" webXmlFragment="jsp/WEB-INF/generated_web.xml" outputDir="java/jsp-src" />
    <jspc srcdir="jsp" destdir="java/jsp-src">
      <include name="include/**/*.jsp" />
      <include name="**/*.jsp" />
    </jspc>
    <mkdir dir="build/jsp-classes" />
    <property environment="env" />
    <javac destdir="build/jsp/WEB-INF/classes" optimize="off" debug="on" failonerror="true" srcdir="java/jsp-src" excludes="**/*.smap">
      <classpath>
        <pathelement location="classes" />
        <fileset dir="lib">
          <include name="*.jar" />
        </fileset>
        <pathelement location="${env.tomcat.home}/common/classes" />
        <fileset dir="${env.tomcat.home}/common/lib">
          <include name="*.jar" />
        </fileset>
        <pathelement location="${env.tomcat.home}/shared/classes" />
        <fileset dir="${env.tomcat.home}/shared/lib">
          <include name="*.jar" />
        </fileset>
        <fileset dir="${env.tomcat.home}/bin">
          <include name="*.jar" />
        </fileset>
      </classpath>
      <include name="**" />
      <!--<exclude name="**/includes/*menu_jsp.java" /> -->
    </javac>
  </target>
  <target name="clean" description="Deletes the java/classes dir and torque base objects">
    <delete dir="classes" />
    <delete dir="${build.home}" />
    <delete>
      <fileset file="build/*" />
    </delete>
    <delete dir="java/myproject/torque/map" />
    <delete dir="java/jsp-src" />
    <delete dir="jsp/WEB-INF/classes" />
    <delete dir="jsp/WEB-INF/lib" />
    <delete>
      <fileset dir="java/myproject/torque" includes="Base*.java" />
    </delete>
    <touch file="torque/myproject-schema.xml" />
  </target>
</project>
4b9b3361

Ответ 1

так как ваше имя файла ant - build.xml, вы должны просто ввести ant без ant build.xml. то есть: > ant [enter]

Ответ 2

  • Возможно, у вас нет переменной среды ANT_HOME, установленной правильно
  • Кажется, вы вызываете Ant следующим образом: "ant build..xml". Если ваш Ant script имеет имя build.xml, вам нужно указать только цель в командной строке. Например: "ant target1".

Ответ 3

Похоже, вы назвали его 'ant build..xml'. ant автоматически выбирает файл build.xml в текущем каталоге, поэтому достаточно вызвать 'ant' (если задан целевой объект по умолчанию) или 'ant target' (целевая именованная цель будет вызвана).

С вызовом 'ant -p' вы получите список целей, определенных в файле build.xml.

Изменить: В комментарии показан вызов ant -verbose build.xml '. Чтобы быть верным, это нужно назвать "ant -verbose". Файл build.xml в текущем каталоге будет использоваться автоматически. Если необходимо явно указать файл сборки (потому что это имя не является примером build.xml), вы должны указать файл сборки с параметром -f'-option: 'ant -verbose -f build.xml', Надеюсь, это поможет.

Ответ 4

в папке, в которой только выполняется команда run.xml -

ant

а не команда -

ant build.xml

`

. если вы используете файл ant как build xml, то приведенные ниже шаги помогут вам. Шаги: open cmd Подсказка → переключиться на местоположение проекта → введите ant и нажмите клавишу ввода

Ответ 5

Это проблема Только при запуске ant -d or ant -verbose, but works other times?

Я заметил эту строку сообщения об ошибке:

Could not load definitions from resource org/apache/tools/ant/antlib.xml. It could not be found.

Файл org/apache/tools/ant/antlib.xml встроен в ant.jar. Команда ant - это действительно оболочка script, называемая ant или пакетная script, называемая ant.bat. Если переменная окружения ANT_HOME не установлена, она выяснит, где она расположена, посмотрев, где находится команда ant.

Иногда я видел это, когда кто-то перемещает ant shell/batch script, чтобы поместить его в свой путь, и ANT_HOME либо не установлен, либо установлен неверно.

На какой платформе вы работаете? Это Windows или Unix/Linux/MacOS? Если вы находитесь в Windows, проверьте, установлен ли% ANT_HOME%. Если это так, убедитесь, что это правильный каталог. Убедитесь, что вы установили PATH в число %ANT_HOME%/bin.

Если вы работаете в Unix, не копируйте ant shell script в исполняемый каталог. Вместо этого сделайте символическую ссылку. У меня есть каталог под названием /usr/local/bin, где я помещаю команду, я хочу переопределить команды в /bin и /usr/bin. Мой ant установлен в /opt/ant-1.9.2, и у меня есть символическая ссылка от /opt/ant-1.9.2 до /opt/ant. Затем у меня есть символические ссылки от всех команд в /opt/ant/bin до /usr/local/bin. Оболочка ant script может обнаруживать символические ссылки и находить правильное расположение ant HOME.

Затем перейдите в каталог установки ant и посмотрите в каталоге lib, чтобы убедиться, что ant.jar есть, и что он содержит org/apache/tools/ant/antlib.xml. Вы можете использовать команду jar tvf ant.jar. Единственное, что я могу подчеркнуть, это то, что вы все правильно настроили. У вас есть ant shell script в вашей PATH, потому что вы включили каталог bin вашего каталога ant HOME в свой путь к классам или (если вы работаете в Unix/Linux/MacOS), у вас есть этот файл символически связанный с каталогом в вашем PATH.

Убедитесь, что ваш JAVA_HOME установлен правильно (в Unix вы можете использовать символический трюк ссылки, чтобы команда java установила его для вас), и что вы используете Java 1.5 или выше. Java 1.4 больше не будет работать с более новыми версиями Ant.

Также запустите ant -version и посмотрите, что вы получаете. Вы можете получить ту же ошибку, что и раньше, что заставляет меня думать, что у вас что-то не так.

Дайте мне знать, что вы найдете, и свою ОС, и я могу дать вам указания по переустановке Ant.

Ответ 6

Я, наверное, опаздываю, но это сработало для меня:


  • Откройте файл build.xml, расположенный в каталоге проекта.
  • Скопируйте и вставьте следующий код в основной тег проекта: <target name="build" />