Java Ant生成失败:";“目标”;build..xml“;“不存在”;
在详细模式下运行ant文件时,出现了如下错误。有人知道出了什么问题吗?我是新来的Java Ant生成失败:";“目标”;build..xml“;“不存在”;,java,ant,build,Java,Ant,Build,在详细模式下运行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
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="<!--" endToken="-->">
<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>
看起来您称之为“ant build..xml”。ant会自动选择当前目录中的build.xml文件,因此只要调用“ant”(如果定义了默认目标)或“ant target”(将调用名为target的目标)就足够了 通过调用“ant-p”,您可以得到build.xml中定义的目标列表
编辑:注释中显示了调用“ant-verbose build.xml”。为了正确起见,必须将其称为“ant-verbose”。将自动使用当前目录中的build.xml文件。如果需要显式指定构建文件(例如,因为它的名称不是build.xml),则必须使用“-f”选项指定构建文件:“ant-verbose-f build.xml”。我希望这会有所帮助。因为您的ant文件名为build.xml,所以您应该只键入ant而不键入ant build.xml。 也就是说:
>ant
[enter]这是一个问题吗只在运行ant-d或ant-verbose时出现,但在其他时间有效
我注意到以下错误消息行:
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
的shell脚本或一个名为ant.bat
的批处理脚本。如果未设置环境变量ANT_HOME,它将通过查看ANT
命令本身的位置来确定其位置
有时,我看到有人移动ant
shell/batch脚本将其放入路径中,并使ant_HOME未设置或设置不正确
你在哪个站台?这是Windows还是Unix/Linux/MacOS?如果您在Windows上,请检查是否设置了%ANT_HOME%。如果是,请确保它是正确的目录。确保已将路径设置为包含%ANT\u HOME%/bin
如果您在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 shell脚本可以检测符号链接并找到正确的Ant主位置
接下来,转到Ant安装目录并在lib目录下查看,确保Ant.jar
在那里,并且它包含org/apache/tools/Ant/antlib.xml
。您可以使用jar-tvf-ant.jar
命令。我唯一能强调的是,你的一切设置都是正确的。您的路径中有Ant shell脚本,这是因为您在类路径中包含了Ant主目录的bin目录,或者(如果您在Unix/Linux/MacOS上),您将该文件以符号方式链接到路径中的目录
确保JAVA_HOME设置正确(在Unix上,您可以使用符号链接技巧让JAVA
命令为您设置),并且您使用的是JAVA 1.5或更高版本。Java1.4将不再适用于更新版本的Ant
同时运行ant-version
,看看您得到了什么。你可能会犯和以前一样的错误,这让我觉得你做错了什么
让我知道您的发现和操作系统,我可以为您提供重新安装Ant的指导。我可能会迟到,但这对我来说很有效:
在build.xml所在的文件夹中,仅运行命令- 蚂蚁 而不是命令-` ant build.xml ` 。如果将ant文件用作构建xml,则以下步骤可帮助您完成以下步骤:
打开cmd Prompt>>切换到项目位置>>键入ant并单击enter键我称之为“ant-verbose build.xml”。我认为ant-p只显示定义了描述的目标。@braveterry:没错,-p只显示定义了描述的目标。通常,这用于将目标设置为“公共”目标,而将其他目标设置为私有目标。作为构建文件的创建者,您通常需要用于内部使用的目标,但用户不需要k