2013-06-03 3 views
0

В нашей компании много проектов на Java и build.xml, которые должны компилировать, очищать и запускать весь код, поэтому build.xml не компилирует код и .jar doesn ' т. build.xmlbuild.xml in eclipse не создает jar

<?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 

ответ

1

Посмотрите зависимости, указанные для цели «createJar».

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

Если вы звоните цель createJar, прежде чем он работает, муравей будет вызывать compileMcVpc, чистый и обобщать, в таком порядке.

Задача JAR считывается в файлах, которые были созданы во время compileMcVpc, а затем удалены чистым. Поэтому к моменту, когда createJar начинает выполнять свою работу, файлы, которые ему нужны, ушли.

Теперь немного интересно, что у вас есть 2 цели, compileMcVpc, которые оба выводят java-байт-код в тот же каталог. Учитывая порядок ваших целей, я ожидал бы, что классы «src» будут находиться в JAR, но не в блоках «module-thx/source».

Попробуйте выпрямить свои зависимости. Чтобы упростить и отлаживать, возможно, удалите все зависимости непосредственно в том порядке, в котором вы хотите, чтобы они запускались без муравья, делающего это для вас. Если это работает, это доказывает, что зависимости виноваты.

Смежные вопросы