gpt4 book ai didi

java - Ant 构建失败,没有可见错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:40:42 26 4
gpt4 key购买 nike

编辑:我最终在 Eclipse 中设置了整个项目并能够构建它。我不确定为什么会出现此问题,希望我永远不必找出答案。

我遇到了一个问题,我的构建报告“BUILD FAILED”但没有报告任何错误。

我正在构建一个包含大量旧代码的大型应用程序,现在我乐于修改这些代码。大多数其他开发人员已经使用 Eclipse 设置了他们的构建,但我正在尝试通过现有的 build.xml 文件构建它。

设置类路径后,构建运行顺利,但在开始编译步骤后不久,它返回:

Lots of "[javac] file.java" lines.

BUILD FAILED
<project path>/build.xml:201: Compile failed; see the compiler error output for details.

这没什么用。 build.log 除了堆栈跟踪之外没有其他信息:

at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1085)
at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:885)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
at org.apache.tools.ant.Main.runBuild(Main.java:758)
at org.apache.tools.ant.Main.startAnt(Main.java:217)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)

-debug 标志添加到 ant 中会产生大量信息,并且类路径如此之长(如此多的 jar)很难对其进行分类。

这是 ant 中的目标:

  <target name="compile" depends="achmetadata">
<mkdir dir="${path.build.classes}"/>
<javac
listfiles="yes"
destdir="${path.build.classes}"
classpathref="project.classpath"
debug="on"
deprecation="on"
fork="yes"
nowarn="no"
memoryMaximumSize="512M"
srcdir="${path.src.java}"
source="1.4"
target="1.4"
>
-><src path="${path.build.src}"/>
<patternset refid="production-code"/>
</javac>
</target>

类路径是通过该 classpathref 设置的,并且通过 和 标签包含了很多 jar。

关于我应该寻找什么的任何想法?什么会导致 ant 像这样失败?

最佳答案

CLASSPATH 应该在 build.xml 中设置。如果您依赖于 CLASSPATH 环境变量,那么您就犯了一个错误。

看看这个 build.xml 是否工作得更好。研究目录结构并使您的目录结构与 build.xml 中拼写的相匹配:

<?xml version="1.0" encoding="UTF-8"?>
<project name="xslt-converter" basedir="." default="package">

<property name="version" value="1.6"/>
<property name="haltonfailure" value="no"/>

<property name="out" value="out"/>

<property name="production.src" value="src"/>
<property name="production.lib" value="lib"/>
<property name="production.resources" value="config"/>
<property name="production.classes" value="${out}/production/${ant.project.name}"/>

<property name="test.src" value="test"/>
<property name="test.lib" value="lib"/>
<property name="test.resources" value="config"/>
<property name="test.classes" value="${out}/test/${ant.project.name}"/>

<property name="exploded" value="out/exploded/${ant.project.name}"/>
<property name="exploded.classes" value="${exploded}/WEB-INF/classes"/>
<property name="exploded.lib" value="${exploded}/WEB-INF/lib"/>

<path id="production.class.path">
<pathelement location="${production.classes}"/>
<pathelement location="${production.resources}"/>
<fileset dir="${production.lib}">
<include name="**/*.jar"/>
<exclude name="**/junit*.jar"/>
<exclude name="**/*test*.jar"/>
</fileset>
</path>

<path id="test.class.path">
<path refid="production.class.path"/>
<pathelement location="${test.classes}"/>
<pathelement location="${test.resources}"/>
<fileset dir="${test.lib}">
<include name="**/junit*.jar"/>
<include name="**/*test*.jar"/>
</fileset>
</path>

<path id="testng.class.path">
<fileset dir="${test.lib}">
<include name="**/testng*.jar"/>
</fileset>
</path>

<available file="${out}" property="outputExists"/>

<target name="clean" description="remove all generated artifacts" if="outputExists">
<delete dir="${out}" includeEmptyDirs="true"/>
<delete dir="${reports.out}" includeEmptyDirs="true"/>
</target>

<target name="create" description="create the output directories" unless="outputExists">
<mkdir dir="${production.classes}"/>
<mkdir dir="${test.classes}"/>
<mkdir dir="${reports.out}"/>
<mkdir dir="${junit.out}"/>
<mkdir dir="${testng.out}"/>
<mkdir dir="${exploded.classes}"/>
<mkdir dir="${exploded.lib}"/>
</target>

<target name="compile" description="compile all .java source files" depends="create">
<!-- Debug output
<property name="production.class.path" refid="production.class.path"/>
<echo message="${production.class.path}"/>
-->
<javac srcdir="src" destdir="${out}/production/${ant.project.name}" debug="on" source="${version}">
<classpath refid="production.class.path"/>
<include name="**/*.java"/>
<exclude name="**/*Test.java"/>
</javac>
<javac srcdir="${test.src}" destdir="${out}/test/${ant.project.name}" debug="on" source="${version}">
<classpath refid="test.class.path"/>
<include name="**/*Test.java"/>
</javac>
</target>

</project>

关于java - Ant 构建失败,没有可见错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3401595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com