Я новичок в Ant, и в настоящее время существует новая сборка веб-приложения Java, в которой требуется поддержка ant, веб-приложение зависит от веб-приложения b и добавило его в папку lib как зависимость JAR, поэтому, если есть какое-то обновлениена b, тогда мне нужно пересобрать b и сгенерировать новый JAR, затем заменить зависимость a.
Хотя, как я уже сказал, я изменяю небольшой код в одном файле Java в приложении b, а затем компилирую его, затем распаковываю зависимость b JAR для замены этого файла класса и повторно упаковываю его в файл JAR.Когда я его собрал, произошла ошибка, которая показала, что компиляция не удалась.
Эти два java-приложения основаны на JDK1.6, добавьте, я также проверяю, что исходный код jar-файла - JDK 1.6, поэтому я использую JDK 1.6, скомпилируйте его javac updatedJava.java
еще одна вещь заключается в том, что, если я не заменю этот файл класса, он может успешно скомпилироваться в Jenkins, а как только я обновлю этот файл класса, произойдет сбой.
Я действительно не знаком с Ant,Вот мои данные приложения и некоторый журнал ошибок:
Архитектура приложения:
A
|-src
|-web
|- WEB-INFO
|- web.xml
|- lib
|- B.jar
|- webex-build.xml
B
|- src
|- updatedJar.java
|- build
|- classes
|- target
|- B.jar
Файл сборки муравья A:
<project name="A" default="war" basedir=".">
<property file="../build.properties"/>
<property name="version" value="1.0"/>
<property name="dir.root" value="."/>
<echo>#####################################################################</echo>
<echo># Building ${ant.project.name} Version is ${version}</echo>
<echo>#####################################################################</echo>
<!--property name="WL_HOME" value="D:/bea" /-->
<property name="app.lib" value="web/WEB-INF/lib" />
<property name="server.lib" value="${wl.home}/server/lib"/>
<property name="modules.lib" value="${bea.home}/modules" />
<property name="configfile_env" value="web_message_${env}.properties" />
<!-- set local properties for this build -->
<path id="lib.classpath">
<fileset dir="${app.lib}">
<include name="*.jar"/>
</fileset>
<pathelement location="${modules.lib}/javax.servlet_1.0.0.0_2-5.jar"/>
<pathelement location="${server.lib}/ojdbc6.jar"/>
</path>
<property name="build" value="build"/>
<property name="src" value="src/java"/>
<property name="config" value="src/configsrc/"/>
<property name="srcjaxws" value="src/jaxwssource"/>
<property name="adapter" value="src/adapter"/>
<property name="reports.junit.xml.dir" value="junit/reports"/>
<property name="project.test.java.dir" value="src/test"/>
<property name="project.target.dir" value="target"/>
<target name="init">
<tstamp/>
<delete dir="${build}"/>
<mkdir dir="${build}"/>
</target>
<target name="compile" depends="init">
<mkdir dir="${build}/classes"/>
<javac destdir="${build}/classes" debug="on" includeantruntime="false">
<src path="${srcjaxws}"/>
<src path="${src}"/>
<src path="${adapter}"/>
<classpath refid="lib.classpath"/>
<compilerarg value="-Xlint"/>
</javac>
<copy todir="${build}/classes/" overwrite="true" preservelastmodified="true" failonerror="true" verbose="true" flatten="false">
<fileset dir="${config}"/>
</copy>
<!--if>
<isset property="env" />
<then>
<echo>ENV is set as ${env}</echo>
<copy tofile="${build}/classes/config/system/web_message.properties" file="${build}/classes/config/config_env/web_message_${env}.properties" overwrite="true" />
</then>
<else>
<echo>There is no env set, if you want to set, please use -Denv=dev/qa/devint/pp/prod</echo>
</else>
</if-->
</target>
<target name="test" depends="compile">
<echo message="Testing..."/>
<delete dir="${project.target.dir}" />
<delete dir="${reports.junit.xml.dir}" />
<mkdir dir="${project.target.dir}" />
<mkdir dir="${reports.junit.xml.dir}" />
<javac destdir="${build}/classes" debug="true" includeantruntime="false">
<src path="${project.test.java.dir}"/>
<classpath>
<path refid="lib.classpath"/>
</classpath>
<classpath path="${build}/classes" />
</javac>
<taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask">
<classpath>
<path refid="lib.classpath"/>
</classpath>
</taskdef>
<!-- Import the JaCoCo Ant Task -->
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<!-- Update the following line, or put the "jacocoant.jar" file in your "$HOME/.ant/lib" folder -->
<classpath path="${app.lib}/jacocoant.jar" />
</taskdef>
<!-- Run your unit tests, adding the JaCoCo agent -->
<jacoco:coverage destfile="${project.target.dir}/jacoco-unit.exec" xmlns:jacoco="antlib:org.jacoco.ant">
<junit fork="yes" failureProperty="test.failed">
<classpath refid="lib.classpath" />
<classpath location="${build}/classes" />
<classpath location="${build}" />
<formatter type="xml" />
<batchtest todir="${reports.junit.xml.dir}">
<fileset dir="${build}/classes">
<include name="**/*Test.class" />
</fileset>
</batchtest>
</junit>
</jacoco:coverage>
<echo message="Test completed..."/>
</target>
<target name="war" depends="compile">
<mkdir dir="${build}/wls10"/>
<wars classes-dir="${build}/classes" build-dir="${build}"/>
</target>
<macrodef name="wars">
<attribute name="classes-dir"/>
<attribute name="build-dir"/>
<sequential>
<war-task classes-dir="@{classes-dir}" build-dir="@{build-dir}" generic="javaee5" appserver="wls10"/>
</sequential>
</macrodef>
<macrodef name="war-task">
<attribute name="classes-dir"/>
<attribute name="build-dir"/>
<attribute name="generic"/>
<attribute name="appserver"/>
<sequential>
<war destfile="@{build-dir}/@{appserver}/WebexPFProxyWS.war" webxml="web/WEB-INF/web.xml">
<classes dir="@{classes-dir}"></classes>
<webinf dir="web/WEB-INF" includes="web*.xm*"/>
<manifest></manifest>
<lib dir="${app.lib}">
<include name="*.jar"/>
</lib>
<webinf dir="web/WEB-INF" includes="wsdl/**"/>
<fileset dir="web">
<include name="**/*.jsp"/>
</fileset>
</war>
</sequential>
</macrodef>
</project>
Журнал ошибок в Jenkins при выполнении ant build:
строка 41 имеет значение <javac destdir="${build}/classes" debug="on" includeantruntime="false">
выше xml.
[exec] [javac] XMLSerializer serializer = getXMLSerializer(writer, null);
[exec] [javac] ^
[exec] [javac] Note: Some input files additionally use unchecked or unsafe operations.
[exec] [javac] 100 errors
[exec] [javac] 116 warnings
[exec]
[exec] BUILD FAILED
[exec] /apps/dftjenkins/jenkins_node/workspace/java/A/webex-build.xml:41: Compile failed; see the compiler error output for details.
[exec]
[exec] Total time: 3 seconds
BUILD FAILED
/apps/dftjenkins/JENKINS_HOME_NODES/selfservices-build-scripts-stash/Proxy/build_ht.xml:149: The following error occurred while executing this line:
/apps/dftjenkins/JENKINS_HOME_NODES/selfservices-build-scripts-stash/Common/build_process.xml:517: The following error occurred while executing this line:
/apps/dftjenkins/JENKINS_HOME_NODES/selfservices-build-scripts-stash/Common/build_common.xml:179: The following error occurred while executing this line:
/apps/dftjenkins/JENKINS_HOME_NODES/selfservices-build-scripts-stash/Common/build_common.xml:182: exec returned: 1
Total time: 7 seconds
Build step 'Invoke Ant' marked build as failure
Running post build processes