2008-09-25 23 views
20

En este momento, tengo dos proyectos de Eclipse: ambos usan Maven 2 para todas sus bondades de dependencia de jar.Agregando proyectos de eclipse referenciados a dependencias de maven

Dentro del eclipse, tengo el proyecto Foo incluido en la ruta de compilación del proyecto Bar, por lo que puedo usar las clases de Foo desde la barra de proyectos. Esto funciona muy bien en la tierra eclipse, pero cuando intento:

mvn compile 

dentro del directorio del bar, se produce un error porque Maven no sabe nada de la relación entre proyectos que en la trayectoria de la estructura de Eclipse.

Si estuviera usando hormiga, solo la usaría para hacer algo tonto como copiar foo.jar en classpath de Project Bar, pero hasta donde puedo decir, las cosas se hacen mucho menos hackishly en Maven-land.

Me pregunto si hay una solución estándar para este tipo de problema, parece que sería bastante común, y me falta algo básico sobre cómo funciona Maven.

+0

aa .. disparar .. He hecho esto antes. Pero no puedo encontrarlo ahora (en casa). Si todavía no hay respuesta para cuando regrese a la oficina ... Lo buscaré. – paan

Respuesta

17

Quizás esté haciendo referencia al otro proyecto a través de la configuración de eclipse-> solo ruta de compilación. Esto funciona siempre que use Eclipse para construir su proyecto.

Intenta ejecutar primero mvn install en la barra de proyecto (para poner Bar en tu repositorio de maven), y luego agrega la dependencia a Foo's pom.xml.

Eso debería funcionar !.

1

Creo que la mejor manera de manejarlo es hacer que un proyecto de Bar a Maven sea como Foo, y luego mvn install para que esté disponible en su repositorio local de Maven. El inconveniente es que debe instalar ese proyecto cada vez que desea que Maven vea los cambios que realiza en Bar.

+0

Esto es exactamente lo que la gente quiere evitar. Si estás desarrollando, cambias cosas todo el tiempo. ¿Quién querría 'mvn install' cada vez. – T3rm1

1

No es una respuesta completa:
pom de barra debe incluir Foo con el fin de utilizar Maven para compilarlo.
Me interesa también esta pregunta, pero desde la perspectiva de cómo lograr que eclipse reconozca una dependencia añadida por un experto es en realidad otro proyecto en el mismo espacio de trabajo. Actualmente modifico la ruta de compilación después de realizar mvn eclipse:eclipse

8

Consulte el plugin m2eclipse. Actualizará automática y dinámicamente la ruta de compilación del proyecto cuando cambie el pom. No es necesario ejecutar mvn eclipse:eclipse.

El complemento también detectará si hay alguna dependencia en el mismo espacio de trabajo y agregará ese proyecto a la ruta de compilación.

Idealmente, si usa m2eclipse, nunca cambiaría la ruta de compilación del proyecto manualmente. Siempre editaría pom.xml, que es la forma correcta de hacerlo.

Como se ha indicado anteriormente, Maven no sabrá sobre la ruta de compilación del proyecto Eclipse. Debe agregar todas las dependencias al pom y debe asegurarse de que todas las dependencias se compilan e instalan primero ejecutando mvn install.

Si desea construir ambos proyectos con un solo comando, entonces puede encontrar project aggregation interesante.

2

Es posible que desee probar un enfoque alternativo, donde tiene un proyecto padre maven y dos proyectos hijo. digamos:

Padre (pom.xml tiene referencias a los dos hijos proyectos/módulos) -> A (B) depende de -> B

entonces cuando se ejecuta mvn eclipse: eclipse desde la raíz del padre, madre, experto generará proyectos de Eclipse para A y B, y tendrá B como un proyecto requerido en el classpath de A.

Puede ejecutar mvn install desde la raíz de Parent para obtener la compilación de ambos proyectos.

Para completar su configuración, tendrá que importar tanto A como B en Eclipse, asegurándose de no marcar "Copiar proyectos en el área de trabajo".

0

Si hace referencia a un proyecto local, pero su versión ha sido actualizada (generalmente aumentada), tal vez solo pueda encontrarse en su repositorio local y debe actualizar la versión (probablemente fija) en su POM (s))


Tenemos un "proyecto común" (usado en todas partes) que no necesariamente tienen que ser versionado ya que MÁRQUELO a través de control de código fuente. Así que, o

  • manteniéndolo a una versión fija o
  • referencia a ella con el LATEST versión especial

son buenas soluciones para estar siempre en el lado seguro.

0

Solo necesitaba hacer esto y lo necesitaba para compilar con el comando mvn clean install externo. Esta es la forma correcta de configurar esto en Eclipse. (Con el proyecto B como una dependencia de A)

  1. Abra el pom.xml para el proyecto A en Eclipse.
  2. Vaya a la pestaña Dependencies.
  3. Haga clic en el botón Add... en el medio de la página (para el cuadro Dependencias lado izquierdo)
  4. En la ventana emergente, debe haber una caja debajo de una línea con el texto encima de ella diciendo Enter groupId, artifactId or sha1 prefix or pattern (*):. Ingrese el ID del artefacto para el proyecto B en este recuadro.
  5. doble clic en el frasco que desea agregar como una dependencia de este proyecto
    1. Es posible que tenga que actualizar el proyecto después.
    2. Haga clic derecho del proyecto A en que el explorador de paquetes
    3. Maven -> Actualización del Proyecto ...
    4. después haga clic en OK en la ventana emergente.
Cuestiones relacionadas