¿Por qué los Jars quedan excluidos del despliegue de Enunciate?

votos
0

Estoy usando Enunciate para construir un prototipo de API REST y necesito incluir un contenedor que contenga código personalizado como biblioteca.

My Ant Script se ve así:

<!--include all jars-->
<path id=en.classpath>
    <fileset dir=${lib}>
        <include name=**/*.jar />
    </fileset>
</path>

<!--define the task-->
<taskdef name=enunciate classname=org.codehaus.enunciate.main.EnunciateTask>
    <classpath refid=en.classpath />
</taskdef>

<mkdir dir=${dist} />

<enunciate dir=${src} configFile=${basedir}/enunciate.xml>
    <include name=**/*.java />
    <classpath refid=en.classpath/>
    <export artifactId=spring.war.file destination=${dist}/${war.name} />
</enunciate>

El problema es que mi jar personalizado está siendo excluido del archivo WAR. Es necesario compilar el enunciado de clases anotadas, por lo que obviamente el jar está en el classpath en tiempo de compilación, pero el enunciado no lo incluye en la distribución. También noté que varios de los frascos necesarios para enunciar no se incluyen en el archivo WAR.

¿Por qué están siendo excluidos y cómo lo soluciono?

Publicado el 02/10/2008 a las 14:08
por usuario
En otros idiomas...                            


3 respuestas

votos
2

Nunca usé el enunciado, pero como un truco rápido puedes agregar los frascos a la guerra:

<jar jarfile="${dist}/${war.name}" update="true">
   <fileset dir="${lib}">
        <include name="**/*.jar" />
    </fileset>
</jar>

Nota: probablemente desee agregar los archivos jar al directorio WEB-INF / lib , en lugar del directorio raíz.

Supongo que enunciar hace que el mínimo interfiera con tu propio proceso de compilación, ya que sabes cuál es el mejor para poner en tu archivo jar.

Respondida el 21/10/2008 a las 09:41
fuente por usuario

votos
1

Como resulta que uno de los contenedores que estamos tratando de incluir tiene una dependencia enumerada en su archivo Manifiesto de un contenedor en el que Enunciate depende (freemarker). Enunciate excluye automáticamente a freemarker y, a primera vista, parece que excluye automáticamente todo lo que dependa de freemarker. Si eliminamos Freemarker de la lista de jar dependientes en el archivo de manifiesto de nuestro código, funciona bien.

Sin embargo; He hablado con el desarrollador principal de Enunciate (Ryan Heaten) y él me asegura que esto no es lo que está sucediendo. Incluyendo su respuesta a continuación:

¡¿De Verdad?!

Guau. Interesante. No puedo explicarlo; Enunciate no mira lo que está en el Manifiesto para determinar qué incluir en la guerra, así que estoy algo perplejo aquí. También podría ser algún comportamiento extraño de Ant (sin incluir ese jar en la referencia "en.classpath" por algún motivo).

~ Ryan

Respondida el 29/06/2009 a las 12:28
fuente por usuario

votos
0

En enunciate.xml lo cuento no copiar cualquier librería en sí:

<webapp doLibCopy="false">

Luego, en el fichero de construcción de hormigas al final de la tarea enunciado actualizo la guerra (se puede hacer esto para actualizar los frascos incluidos / excluidos si está o no tener enunciar copiar los frascos para usted en el paso anterior):

<war destfile="build-output/{mywar}" update="true">
    <lib dir="WebContent/WEB-INF/lib">
        <include name="**/*.jar" />
    </lib>
    <lib dir="build-output">
        <include name="some_other.jar" />
    </lib>
</war>
Respondida el 10/09/2015 a las 19:14
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more