2011-01-28 19 views
9

Actualmente estoy usando IBM Rational Application Development (distro de IBM Eclipse) para el desarrollo de portlets y tengo un pequeño problema con la integración de Maven.Maven para copiar JAR al agregar dependencias

Esta es la situación:

1) IBM RAD tiene la capacidad de desplegar un portlet directamente desde dentro de sí mismo (RUN/PRUEBAS)

En este caso, no estoy usando Maven generó la guerra a toda porque IBM RAD parece crear el WAR automáticamente y lo envía a IBM WebSphere Portal. Lo cual no es gran cosa hasta ahora.

2) dependencias Maven no se copian en WebContent WEB-INF// lib

IBM tiene su propia estructura de directorios: WebContent/WEB-INF y WebContent/META-INF. Si actualicé pom.xml para incluir nuevas dependencias, esos JARS no se copiarán en el directorio WebContent/WEB-INF/lib, por lo tanto, cuando desee ejecutar/depurar el portlet, esas bibliotecas no se incluirán.

Pregunta:

¿Hay alguna forma de copiar los nuevos archivos JAR automáticamente a la carpeta/WebContent WEB-INF/lib tan pronto como puedo actualizar el pom.xml? (De ser así, ¿en qué ciclo de vida debería estar?)

Si no hay una solución perfecta para la pregunta n. ° 1, no me importa si este paso está incluido en la compilación/objetivo "mvn install".

Prefiero no usar ant-task pero en su lugar tenga una utilidad de copia propia, si existe.

Si alguien tiene sugerencias sobre cómo integrar Maven e IBM RAD para el desarrollo de WebSphere Portlet, puede agregar más respuestas.

Gracias

+0

No estoy seguro de si esto funciona para IBM RAD pero con Eclipse WTP puede definir las piezas del ensamblaje de implementación a partir de las propiedades del proyecto. –

Respuesta

2

He aquí un esqueleto pom.xml Maven 2 Escogí de un viejo proyecto RAD:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>foo</groupId> 
    <artifactId>fooproject</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <properties> 
    <project.build.sourceEncoding>US-ASCII</project.build.sourceEncoding> 
    </properties> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <finalName>${project.artifactId}-${project.version}</finalName> 
    <resources> 
     <resource> 
     <directory>src</directory> 
     <includes><include>**/*.properties</include></includes> 
     <filtering>true</filtering> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.1</version> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.1-beta-1</version> 
     <configuration> 
      <webappDirectory>${project.basedir}/WebContent</webappDirectory> 
      <warSourceDirectory>${project.basedir}/WebContent</warSourceDirectory> 
      <webXml>${project.basedir}/WebContent/WEB-INF/web.xml</webXml> 
      <packagingIncludes>**/*.properties,**/*.jsp,**/*.jar,**/*.class,theme/**/*,images/**/*,**/*.xml,**/*.swf,**/*.tld,**/*.txt</packagingIncludes> 
      <archive> 
      <manifest> 
       <addClasspath>true</addClasspath> 
      </manifest> 
      </archive> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
    <!-- compile classpath --> 
    </dependencies> 
</project> 

Esto se aplica a la estructura de directorios creada por RAD (versión 7.5, que apuntan a Portal 6.5.x en WAS 7). Esta no es la única manera de hacerlo y estoy seguro de que se podría mejorar el pom, pero cumplió su propósito. Agregue sus dependencias según corresponda.

+0

Muchas gracias. Trabajar como un encanto. – xandross

1

Tuve la misma pregunta y problemas al integrar Maven y RAD. Estoy usando RAD 8 con M2e y tratando de desplegar automáticamente portlets/depuración para WebSphere Portal 7.

En primer lugar, en cuanto al comentario de Gorkem:

No estoy seguro de si esto funciona para IBM RAD pero con la WTP de Eclipse puede definir las piezas de ensamblaje de implementación a partir de las propiedades del proyecto.

Esto funciona en RAD. Configuré el ensamblaje de implementación de mi proyecto para que coincida con la estructura de construcción de WebSphere y muevo mis dependencias Maven a la carpeta WEB-INF \ lib (Proyecto -> Propiedades -> Ensamblaje de despliegue -> Agregar -> Entradas de ruta de compilación Java -> Dependencias Maven).

enter image description here

Esta configuración me permite construir con éxito la guerra y puedo exportar el archivo EAR generado a partir de RAD y de forma manual implementarlo en mi servidor local y trabaja muy bien. Sin embargo, las opciones de despliegue automático y "ejecutar en el servidor" no funcionan solo con esto. Por alguna razón, desplegará todas las dependencias transitivas (portlet-api, servlet-api, etc.) en WebSphere, lo que provoca conflictos y explosiones.

Por lo tanto, probé la solución pom propuesta por McDowell con éxito limitado: no compilaría ni ejecutaría mis pruebas correctamente, aunque cuando eliminé las pruebas se implementó con éxito desde RAD. Estoy trabajando fuera de su pom para incluir pruebas y publicaré mis resultados aquí cuando lo haga funcionar.

También encontré this thread que contiene un enlace a un 2010 IBM document en la forma "oficial" para integrar Maven y RAD. Estoy trabajando en ello y veré qué solución satisface mejor mis necesidades. De nuevo, si/cuando lo tengo funcionando publicaré más información aquí.


actualización 11/21/2011

IBM ha producido un documento actualizado para la integración Maven/RAD. Puede encontrarlo here. Lo he pasado y está bastante bien hecho. Es paso a paso con capturas de pantalla y un poco de fondo en Maven, M2eclipse y WTP. Todavía hay un par de molestias que Chuck describe en el documento, pero al final, permitieron a nuestro equipo comenzar a usar Maven en un entorno de WebSphere Portal sin abandonar las convenciones de Maven. Con suerte, otros lo encontrarán útil.

Cuestiones relacionadas