Dependencia WAR de Maven

Estoy escribiendo un proyecto para las pruebas de aceptación y, por diversas razones, esto depende de otro proyecto empaquetado como WAR. He logrado descomprimir la GUERRA utilizando el complemento maven-dependency-plugin, pero no puedo hacer que mi proyecto incluya el WEB-INF/lib/*.jar y WEB-INF/classes/* desempaquetados para incluir en el classpath, así que la construcción falla ¿Hay alguna forma de incluir estos archivos en el classpath, o existe una forma mejor de depender de un WAR?

Muchas gracias.

    Hay otra opción desde maven-war-plugin 2.1-alpha-2. En tu proyecto de WAR:

      maven-war-plugin 2.1.1  true   

    Esto crea un artefacto de clases que puede usar en el proyecto de pruebas de aceptación con:

      your-group-id your-artifact-id your-version classes  

    De hecho, por diseño, Maven no resuelve las dependencias transitivas de una guerra declarada como dependencia de un proyecto. De hecho, hay un problema al respecto, MNG-1991 , pero no se resolverá en Maven 2.x y no estoy seguro de que no sé si las superposiciones permiten solucionar este problema. Mi comprensión de la solución sugerida es duplicar las dependencias, por ejemplo, en un proyecto de tipo pom.


    (EDITAR: después de excavar más, encontré algo interesante en este hilo que estoy citando a continuación:

    He estado ayudando con el desarrollo del proyecto AppFuse en el último mes, donde hacemos un uso intensivo de la función de superposición de guerra en el plugin Maven war. ¡Es una característica realmente ingeniosa!

    Para obtener la máxima potencia con superposiciones de guerra, he desarrollado el plugin Warpath que permite a los proyectos utilizar artefactos de guerra como dependencias de pleno derecho. En breve:

    1) El contenido del directorio / WEB-INF / classes en los artefactos de dependencia de guerra se puede incluir en la ruta de clase del proyecto para tareas normales de comstackción, etc.
    2) Las dependencias transitorias de los artefactos de dependencia bélica se vuelven disponibles para su uso por otros complementos, por ejemplo, comstackción y oído, ¡así que ya no tendrás que incluir todas las dependencias al crear guerras flacas!

    El complemento se ha utilizado activamente en el proyecto AppFuse durante los últimos meses, y creo que está en un punto en el que es utilizable y estable. ¿El equipo de plugins de guerra estaría interesado en incluir la funcionalidad warpath dentro del plugin war? Parecería ser el lugar más natural para alojarlo.

    Por lo tanto, no tengo ninguna experiencia con él, pero el plugin maven warpath en realidad se ve bien y está disponible en el repository central. Para usarlo, incluya el siguiente elemento de configuración de complemento en su archivo pom.xml :

     [...]    org.appfuse maven-warpath-plugin 1.0-SNAPSHOT true    add-classes       [...] 

    Y agregue las dependencias de guerra que desee incluir en la ruta de clase como dependencias de tipo warpath :

     [...]   org.appfuse appfuse-web 2.0 war   org.appfuse appfuse-web 2.0 warpath   [...] 

    Se necesitan tanto los tipos de dependencia warpath como warpath: el tipo de war warning es utilizado por el plugin Maven war para hacer war over, el warpath plugin lo usa para determinar la lista correcta de artefactos para su inclusión en el classpath del proyecto.

    Yo lo probaría.)

    Usa superposiciones . En primer lugar, su proyecto de prueba también debe tener una war empaque.

    Declara la dependencia del proyecto de guerra que deseas probar:

      ${project.groupId} your-project-arftifactId ${project.version} war test  

    luego configure la superposición maven-war-plugin:

       org.apache.maven.plugins maven-war-plugin    ${basedir}/src/main/webresources true      your.group your-project-artifactId     

    En el ejemplo anterior del proyecto de prueba, sobrescribo los archivos de configuración de recursos web (como conxtext, etc.).

    EDITAR: esta solución no fue probada con Maven 3.

    Buen punto, Justin. Eso me ayudó a resolver mi problema, a saber: incluir una guerra en un ensamblado Y incluir todas sus dependencias transitivas. No pude duplicar la dependencia de guerra como ‘jar’ como sugirió, ya que el plugin de ensamblaje no encontraría un jar referenciado por ese groupId / artefactId, pero

    • duplicando la dependencia de la guerra como tipo pom

    ¡trabajos! La guerra y sus dependencias transitivas no están incluidas en el conjunto. Para excluir el archivo pom (ahora también aparece) tuve que agregar un elemento de exclusión como este:

       *:pom  

    en mi archivo assembly.xml

    Creo que esto también podría ser una solución para la pregunta original de este hilo.

    Si enumera la dependencia del proyecto war como una dependencia de jar, parece recoger los jars / resources necesarios. Estoy usando Maven 2.2 + m2eclipse.