java - eclipse 中的 build.xml 不构建 jar

标签 java

在我们公司,许多项目都在 Java 上,并且 build.xml 应该编译、清理和运行所有代码,因此 build.xml 不会编译代码,.jar 也不会创建。 构建.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="java" basedir=".">

    <description>Builds, tests, and runs the project front_web.</description>
      <property name="project.location" value="C:\apache\repp_copy\Java\processing" />
      <property name="webapps.location" value="C:\apache-tomcat-6.0.36\webapps" />
       <path id="project.class.path">
        <pathelement location="C:\apache\repp_copy\Java\processing\lib\servlet-api.jar" />
        <pathelement location="C:\apache\repp_copy\Java\processing\lib\log4j-1.2.16.jar" />
        <pathelement location="C:\apache\repp_copy\Java\processing\lib\mailapi.jar" />
       </path>  
    <target name="compile" depends="clean">
            <javac  srcdir="src" destdir="Build/tnxBuild" debug="true" encoding="utf-8">
                <classpath refid="project.class.path" />
            </javac>
            <copy todir="Build/tnxBuild">
              <fileset dir="src">
                <include name="*.properties"/>
              </fileset>
            </copy>
    </target>

    <target name="compileMcVpc" depends="clean, compile">
        <javac  srcdir="module-thx/src" destdir="Build/tnxBuild" debug="true" encoding="utf-8">
            <classpath refid="project.class.path" />
        </javac>
        <copy todir="Build/tnxBuild">
          <fileset dir="module-thx/src">
            <include name="*.properties"/>
          </fileset>
        </copy>
    </target>

    <fileset id="common" dir="lib">
                <include name="*.jar" />
    </fileset>

    <target name="createJar" depends="compileMcVpc,clean,compile">  
    <war destfile="thx.jar" webxml="module-thx/web/WEB-INF/web.xml">
        <lib refid="common" />
        <classes dir="${project.location}/Build/tnxBuild">
        </classes>

        <metainf file="module-thx/web/META-INF/context.xml">
        </metainf>
        <fileset id="content" dir="${project.location}/module-thx/web">
            <include name="*/*.*" />
            <include name="*.*" />
        </fileset>          

    <!--<metainf file="front_web/web/META-INF/context.xml">
      </metainf>-->
        <!--<fileset id="content" dir=".">
            <include name="*.*" />
        </fileset>-->
    </war>  
    </target>   

    <target name="clean">
        <delete dir="Build/tnxBuild" />
        <mkdir dir="Build/tnxBuild" />  
    </target>

    <target name="runApp" depends="createJar">
        <delete dir="${webapps.location}/thx.jar" />
        <copyfile src="thx.jar" dest="C:\apache\repp_copy\Java\processing\jars\thx.jar" />
        <delete dir="thx.jar" />
    </target>
</project>

PS 所有目录都正确,仔细检查。 控制台结果:

Buildfile: C:\apache\repp_copy\Java\processing\build-Tnx.xml
BUILD SUCCESSFUL
Total time: 422 milliseconds

最佳答案

查看为“createJar”目标列出的依赖项。

<target name="createJar" depends="compileMcVpc,clean,compile">

如果您调用createJar目标,在运行之前,ant将按顺序调用compileMcVpc、clean和compile。

JAR 任务读取在compileMcVpc 期间构建的文件,然后通过clean 删除。因此,当 createJar 开始工作时,它所需的文件已经消失了。

现在有点有趣的是,您有 2 个目标,compileMcVpc,它们都将 java 字节码输出到同一目录。考虑到目标的顺序,我希望“src”类将位于 JAR 中,而不是“module-thx/source”jar 中。

尝试理顺您的依赖关系。为了简化和调试,也许可以按照您希望它们运行的​​顺序直接删除所有依赖项,而无需 ant 为您做这件事。如果有效,则证明依赖项有问题。

关于java - eclipse 中的 build.xml 不构建 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16896359/

相关文章:

java - 将过滤器引入 App Engine 应用程序的正确方法是什么?

java - 将绘图从 R 调用到 Java 应用程序中

java - 在命令提示符下运行 jar 文件

java - 获取字符串中接下来的两个单词

java - 从服务器更新java代码

java - 井字棋建议走法

Java InputHandler 从不执行

java - 新复合 Material 未显示在对话框中

java - 在 Java 中打开端口时出错

java - 如何从我的实体获取 EmbeddedId