web-dev-qa-db-ja.com

Antビルドが失敗しました:「ターゲット "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>
18
christy

antファイルの名前はbuild.xmlであるため、ant build.xmlなしでantと入力する必要があります。あれは: > ant [入る]

20
duracell
  1. おそらく環境変数ANT_HOMEが正しく設定されていない
  2. 次のようにAntを呼び出しているようです: "ant build..xml"。 antスクリプトの名前がbuild.xmlの場合、コマンドラインでターゲットのみを指定する必要があります。たとえば、「ant target1」。
10
wheleph

「ant build..xml」と呼ばれているようです。 antは現在のディレクトリにあるファイルbuild.xmlを自動的に選択するため、「ant」(default-targetが定義されている場合)または「ant target」(targetという名前のターゲットが呼び出されます)を呼び出すだけで十分です。

「ant -p」を呼び出すと、build.xmlで定義されているターゲットのリストが取得されます。

編集:コメントに「ant -verbose build.xml」の呼び出しが表示されます。正確に言うと、これは「ant -verbose」と呼ばれる必要があります。現在のディレクトリにあるファイルbuild.xmlが自動的に使用されます。ビルドファイルを明示的に指定する必要がある場合(たとえば、名前がbuild.xmlではないため)、 '-f'-option:' ant -verbose -f build.xml 'でビルドファイルを指定する必要があります。これがお役に立てば幸いです。

8
Mnementh

build.xmlが存在するフォルダーでコマンドのみを実行します-

コマンドではなく-`

ant build.xml

`

。 antファイルをビルドxmlとして使用している場合、以下の手順が役立ちます。手順:cmdプロンプト>>プロジェクトの場所に切り替え>> antを入力してEnterキーをクリックします

3

これは問題ですか?Onlyant -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コマンドは、実際にはantと呼ばれるシェルスクリプトまたはant.batと呼ばれるバッチスクリプトです。環境変数ANT_HOMEが設定されていない場合、antコマンド自体の場所を確認することで、環境変数の場所がわかります。

誰かがant Shell/batchスクリプトを移動してパスに入れ、ANT_HOMEが設定されていないか、正しく設定されていない場合、これを見たことがあります。

どのプラットフォームを使用していますか?これはWindowsまたはUnix/Linux/MacOSですか? Windowsを使用している場合は、%ANT_HOME%が設定されているかどうかを確認してください。正しい場合は、正しいディレクトリであることを確認してください。 %ANT_HOME%/binを含むようにPATHを設定したことを確認してください。

Unixを使用している場合は、ant Shellスクリプトを実行可能ディレクトリにコピーしないでください。代わりに、シンボリックリンクを作成します。 /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シェルスクリプトは、シンボリックリンクを検出し、正しいAntホームの場所を見つけることができます。

次に、Antインストールディレクトリに移動し、libディレクトリの下を見て、ant.jarが存在し、org/Apache/tools/ant/antlib.xmlが含まれていることを確認します。 jar tvf ant.jarコマンドを使用できます。私が強調できる唯一のことは、すべてが正しくセットアップされていることです。 AntのHOMEディレクトリのbinディレクトリをクラスパスに含めたため、または(Unix/Linux/MacOSを使用している場合)のディレクトリにシンボリックにリンクされたファイルがあるため、PATHにAntシェルスクリプトがあります道。

Java_HOMEが正しく設定されていることを確認します(Unixでは、シンボリックリンクトリックを使用してJavaコマンドで設定できること)、およびJava 1.5以上Java 1.4は、Antの新しいバージョンでは動作しません。

また、ant -versionを実行して、何が得られるかを確認します。あなたは以前と同じエラーを受け取るかもしれません。

見つけたものとOSを教えてください。Antを再インストールする方法を説明できます。

0
David W.

私はおそらく遅れていますが、これは私のために働いた:


  1. プロジェクトのディレクトリにあるbuild.xmlファイルを開きます。
  2. メインのprojectタグに次のコードをコピーして貼り付けます:<target name="build" />
0
abilasco