2015-04-06 80 views
0

我是新與ANT構建,和我有它的麻煩,當我嘗試建立我收到一個消息:Ecplipse ANT生成錯誤

構建失敗 C:\用戶\用戶\文件\ PM \ proyecto-base \ proyecto-base \ intranet \ build.xml:169:找不到參考xdoclet.classpath。

但我已經在同一個文件中聲明瞭xdoclet.classpath。

另外我有一個像$ {xdoclet.lib.dir}在build.properties文件中聲明的屬性。

這裏是我的build.xml文件

<?xml version="1.0" encoding="ISO-8859-1"?> 

<!-- Ant Build File para Intranet --> 
<project name="${project.name}" default="ear" basedir="."> 

    <!-- Importar funcionalidad comun --> 
    <import file="../common.xml" /> 
    <property name="jboss.security-domain" value="java:/jaas/NotificacionApplicationSecurity" /> 
    <target name="init">   
     <path id="classpath"> 
      <fileset dir="${lib.dir}" /> 
      <fileset dir="${hibernate.dir}" /> 
      <fileset dir="${hibernate-annotations.dir}" /> 
      <fileset dir="${sri-adm.dir}" /> 
      <fileset dir="${sri-seguridad.dir}" /> 
      <fileset dir="${jsf.dir}" /> 
      <fileset file="${servicio.jar}" /> 
      <fileset file="${log4j.jar}" /> 
      <fileset file="${servlet.jar}" /> 
      <fileset file="${mail.jar}" /> 
      <fileset dir="${jboss.lib}"> 
       <include name="*.jar" /> 
      </fileset> 
     </path> 
     <path id="xdoclet.classpath"> 
      <fileset dir="${xdoclet.lib.dir}" /> 
      <pathelement location="${j2ee.jar}" /> 
      <pathelement location="${servlet.jar}" /> 
     </path> 
    </target> 

    <target name="clean" depends="init"> 
     <delete dir="../${build.dir}/intranet" /> 
     <delete dir="../${dist.dir}"> 
      <exclude name="${servicio.name}-${version}.jar"/> 
     </delete> 
    </target> 


    <!--=============== Compile JAVA files ========================--> 
    <target name="compile" description="Compile" > 
     <echo message="Start compilation..." /> 
     <!-- compile project--> 
     <mkdir dir="../${build.intranet.dir}/classes"/> 
     <javac destdir="../${build.intranet.dir}/classes" target="1.5" debug="true" deprecation="false" optimize="false" failonerror="true"> 
      <src path="${src.main.java.dir}" /> 
      <classpath refid="classpath" /> 
     </javac> 
    </target> 

    <!--============== Genera archivos web==========--> 
    <target name="webdoclet" description="Generar archivos XML Web y Struts" > 
     <echo message="Generando Web" /> 
     <delete file="../${metadata.intranet.web.dir}/jboss-web.xml"/> 
      <webdoclet destdir="../${metadata.intranet.web.dir}" force="${xdoclet.force}" mergedir="${conf.xdoclet.intranet.dir}"> 
       <fileset dir="${src.main.java.dir}"> 
        <include name="**/*.java" /> 
       </fileset> 
       <deploymentdescriptor displayname="SRI" description="" xmlencoding="ISO-8859-1" 
        validatexml="true" servletspec="2.4" sessiontimeout="60" destdir="../${metadata.intranet.web.dir}" 
        mergeDir="../${conf.xdoclet.intranet.dir}" distributable="false" /> 

       <facesconfigxml destinationfile="${project.name}-faces-config.xml" mergedir="../${metadata.intranet-jsf}" /> 
       <jbosswebxml 
        version="4.0" 
        mergeDir="${metadata.intranet-jbossweb}" 
        contextroot="${project.name}" 
        securitydomain="${jboss.security-domain}" 
        validateXML="true" xmlencoding="ISO-8859-1"/> 
      </webdoclet> 
      <replace file="../${metadata.intranet.web.dir}/jboss-web.xml" token="&lt;security-domain" value="&lt;security-domain flushOnSessionInvalidation=&quot;true&quot;" />   

    </target> 



    <target name="build" depends="init,webdoclet" description="Compila las clases"> 
     <mkdir dir="../${classes.dir}" /> 
     <javac destdir="../${classes.dir}" debug="on" deprecation="on" optimize="off" target="1.5" encoding="ISO-8859-1"> 
      <src path="${src.main.java.dir}" /> 
      <classpath refid="classpath" /> 
      <classpath refid="xdoclet.classpath" /> 

      <!-- Descomentar si se quieren ver los Warnings --> 
      <!--compilerarg value="-Xlint:unchecked" /--> 
     </javac> 
    </target> 

    <!--============= Genera un archivo WAR del proyecto =============================--> 

    <target name="war" description="Packages app as WAR" depends="compile, webdoclet"> 
     <echo message="Generando WAR..." /> 
     <mkdir dir="../${dist.dir}/intranet" /> 
     <copy todir="../${metadata.tmp.intranet.dir}"> 
      <fileset dir="../${metadata.intranet.web.dir}" /> 
      <filterset> 
       <filter token="project.name" value="${project.name}"/> 
      </filterset> 
     </copy> 
     <copy file="../${conf.intranet.dir}/jboss-web.xml" todir="../${metadata.tmp.intranet.dir}"> 
      <filterset> 
       <filter token="project.name" value="${project.name}"/> 
      </filterset> 
     </copy> 

     <war destfile="../${dist.dir}/intranet/${webapp.intranet.name}.war" webxml="../${metadata.intranet.web.dir}/web.xml"> 
      <classes dir="../${build.intranet.dir}/classes"> 
       <include name="**/**/controladores/*.*"/> 
       <include name="**/**/web/**/*.*"/> 
       <include name="**/**/validadores/**/*.*"/> 
       <include name="**/**/convertidores/**/*.*"/> 
       <exclude name="**/**/internet/**/*.*"/> 
      </classes> 
      <classes dir="../intranet/src/main/java"> 
       <include name="**/**/*.properties"/> 
      </classes> 
      <fileset dir="${src.main.webapp.dir}"> 
       <include name="**/*.*" /> 
      </fileset> 

      <lib dir="${jsf.dir}" > 
       <include name="rich*.jar" /> 
       <include name="jsf*facelet*.jar" /> 
      </lib> 
      <lib dir="${sri-seguridad.dir}" > 
       <include name="seguridad*.jar" /> 
      </lib> 


      <lib dir="${lib.dir}" > 
       <include name="commons-digester.jar" /> 
       <include name="commons-beanutils.jar" /> 
       <include name="commons-fileupload.jar" /> 
       <include name="commons-el.jar" /> 
       <include name="commons-lang-2.1.jar" /> 
      </lib> 

      <!-- Archivos de configuracion en WEB-INF --> 
      <webinf file="../${metadata.tmp.intranet.dir}/web.xml" /> 
      <webinf file="../${metadata.tmp.intranet.dir}/${project.name}-faces-config.xml" /> 
      <webinf file="../${metadata.tmp.intranet.dir}/jboss-web.xml" /> 
     </war> 
     <delete dir="../${metadata.tmp.intranet.dir}" /> 
    </target> 

    <target name="ear" depends="war"> 
     <mkdir dir="../${metadata.intranet-ejb.tmp}" /> 
     <copy todir="../${metadata.intranet-ejb.tmp}"> 
      <fileset dir="../${metadata.intranet-ejb}" /> 
      <filterset> 
       <filter token="project.name" value="${project.name}"/> 
       <filter token="intranet.name" value="${intranet.name}"/> 
      </filterset> 
     </copy> 
     <ear destfile="../${dist.dir}/intranet/${webapp.intranet.name}.ear" appxml="../${metadata.intranet-ejb.tmp}/application.xml"> 
      <fileset dir="../${dist.dir}" includes="*.jar"/> 
      <fileset dir="../${dist.dir}/intranet" includes="*.war"/> 

     </ear> 
     <delete dir="../${metadata.intranet-ejb.tmp}" /> 
    </target> 


    <target name="deploy" depends="ear" description="Copia el archivo WAR en el directorio deploy del server"> 
     <copy file="../${dist.dir}/intranet/${webapp.intranet.name}.ear" todir="${jboss.deploy.intranet.dir}" /> 
    </target> 

    <!-- Definición de WebDoclet --> 
    <taskdef name="webdoclet" classname="xdoclet.modules.web.WebDocletTask"> 
     <classpath> 
      <path refid="xdoclet.classpath" /> 
      <path refid="classpath" /> 
     </classpath> 
    </taskdef> 



    <!-- Definicion de JSF --> 

    <taskdef name="facesconfigxml" classname="xdoclet.modules.jsf.FacesConfigXmlSubTask"> 
     <classpath> 
      <path refid="xdoclet.classpath" /> 
      <path refid="classpath" /> 
     </classpath> 
    </taskdef> 
</project> 

這是我返回錯誤的線路如下:

<!-- Definición de WebDoclet --> 
<taskdef name="webdoclet" classname="xdoclet.modules.web.WebDocletTask"> 
    <classpath> 
     <path refid="xdoclet.classpath" /> 
     <path refid="classpath" /> 
    </classpath> 
</taskdef> 

但我告訴你,我已經說過我xdoclet.classpath在在開始時相同的文件:

<path id="xdoclet.classpath"> 
      <fileset dir="${xdoclet.lib.dir}" /> 
      <pathelement location="${j2ee.jar}" /> 
      <pathelement location="${servlet.jar}" /> 
     </path> 

任何人都可以幫助我解決這個問題嗎?非常感謝

回答

1

這裏的問題是你的路徑定義在目標「init」內部,但taskdef定義在項目級別上的任何目標之外。當ant加載構建文件時,它將嘗試驗證在項目級定義的所有內容。在這種情況下,由於init目標尚未運行且未定義xdoclet.classpath路徑,因此它失敗。

如果您只是將path元素移出到項目級別(如taskdef),問題應該消失。