2011-05-19 9 views
8

me estoy documentando algunos servicios web Java y los tipos de datos de apoyo. Hay dos servicios que no quiero documentar. ¿Cuál es la forma correcta de excluir una pequeña cantidad de archivos de la tarea Ant javadoc?¿Cómo puedo hacer que una clase Ant Javadoc excluya dos archivos?

He intentado varias iteraciones utilizando archivos o conjuntos de archivos anidados bajo SourcePath o sourcefiles con varias combinaciones de inclusión y exclusión.

La meta de base que he definido correctamente todos los Documentos de mis servicios web:

<target name="javadoc.webservices" description="Generate the documentation for companyproject webservices"> 
    <delete dir="docs/webservices" failonerror="true"/> 
    <mkdir dir="docs/webservices"/> 
    <javadoc packagenames="com.company.project.webservices,com.company.project.models.*" 
      defaultexcludes="yes" 
      destdir="docs/webservices" 
      author="true" 
      version="true" 
      use="true" 
      windowtitle="company project Webservices"> 
     <doctitle><![CDATA[<h1>company project Webservices</h1>]]></doctitle> 
     <bottom><![CDATA[<i>Copyright &#169; 2011 company Corp. All Rights Reserved.</i>]]></bottom> 
     <sourcepath> 
      <path location="companyproject-ejb/src/java"/> 
      <path location="companyproject-models/src"/> 
     </sourcepath> 
     <classpath> 
      <path refid="companyproject-models.module.classpath"/> 
      <path refid="companyproject-ejb.module.classpath"/> 
      <pathelement location="${companyproject-ejb.output.dir}"/> 
     </classpath> 
    </javadoc> 
</target> 

Algunas variaciones que he intentado incluyen:

<sourcefiles> 
      <fileset dir="companyproject-ejb/src/java"> 
       <include name="**/*.java"/> 
       <exclude name="**/*IntegrationTestWS*, **/*NhinInterfaceWS*"/> 
      </fileset> 
     </sourcefiles> 

Este errores con javadoc.exe CreateProcess error=87, The parameter is incorrect

<sourcepath> 
      <fileset dir="companyproject-ejb/src/java"> 
       <include name="**/*.java"/> 
       <exclude name="**/*IntegrationTestWS*, **/*NhinInterfaceWS*"/> 
      </fileset> 
     </sourcepath> 

Mismo error como archivos de origen, pero tiene muchos mensajes que dicen skipping <somefile> since it is no directory.

He intentado variaciones similares usando en lugar de <files><fileset>.

creo que me falta algún conocimiento básico de cómo incluye/excluye obras. ¡Gracias por tu ayuda!

AlexR no acababa de conseguirlo, pero estuvo cerca. Quité <sourcepath> y añadió

<fileset dir="./Companyproject-ejb/src/java/"> 
<include name="com/Company/project/webservices/*"/> 
<exclude name="**/IntegrationTestWS*"/> 
<exclude name="**/NhinInterfaceWS*"/> 
</fileset> 
<packageset dir="./Companyproject-models/src/"> 
    <include name="com/Company/project/models/**"/> 
</packageset> 

Tener solamente un conjunto de archivos Javadoc llevó a quejarse de que no pudo encontrar ningún paquete. Packageset se comporta como un dirset, por lo que no puede excluir archivos individuales, solo directorios. En este caso, pude definir un packageset para un conjunto de doco y un conjunto de archivos para el conjunto restringido y evitarlo.

Respuesta

5

<fileset dir="src" defaultexcludes="yes"> 
    <include name="com/dummy/test/**"/> 
    <exclude name="com/dummy/test/doc-files/**"/> 
</fileset> 

..................

Creo que su error es el "sourcefiles" y "etiquetas" SourcePath. Intenta eliminarlos. Para obtener más información, consulte aquí: http://ant.apache.org/manual/Tasks/javadoc.html

¡Buena suerte!

+2

Gracias. He estado mirando el manual de hormigas toda la mañana! ¿Dónde puedo poner la etiqueta de conjunto de archivos? Como un niño a javadoc? ¿Cuál es la diferencia entre sourcefiles , sourcepath y classpath? – Freiheit

+1

Erp. RTFM y veo que el conjunto de archivos es un parámetro anidado para javadoc. Lo intentaré. – Freiheit

+0

Aceptado. Estaba cerca, vea OP para la solución. – Freiheit

2

Acabo de tener el mismo problema y profundicé un poco en man javadoc para llegar a la conclusión de que no hay solución, a excepción de la solución alternativa que resultó funcionar en el caso de los OP. Sin embargo, me gustaría documentar lo que leo de los documentos.

La tarea javadoc de Ant es solo una envoltura alrededor de javadoc de Java, por lo que se aplica la documentación de este último. En particular, javadoc parece tener dos conceptos limpiamente separados de la generación de la documentación:

  1. paquetes de documentos
  2. documentos clases individuales

Para (1) especificamos los nombres de paquetes como my.nice.package y -sourcepath para ayudar javadoc encontrar estos paquetes.Usando hormiga, los nombres se pueden proporcionar ya sea como packagenames o como packageset, donde este último convierte los nombres de ruta en nombres de paquete (barra diagonal).

Para (2) especificamos rutas de archivos, posiblemente con comodines. Entonces, cada archivo individual está documentado. Con hormiga, esto se hace a través de un fileset anidado, que nos permite excluir archivos.

Ahora parece que dos cosas no funcionan bien juntas en javadoc.

a) Al documentar paquetes, no hay forma de excluir archivos individuales.

b) Al documentar archivos individuales, los paquetes no están documentados, lo que lleva a mensajes de error sobre referencias incorrectas a nombres de paquetes cuando se usa {@link my.package}.

Busque Documentando ambos paquetes y las clases en man javadoc, para ver dónde lo leí.

Esta es una decade old problem, parece :-(

Cuestiones relacionadas