2011-02-04 9 views
10

Tenemos: Eclipse 3.6, Maven (M2Eclipse), Two Project (ProjectA y ProjectB) con pom.xml.¿Hay algún método para usar el repositorio maven "Proyecto de área de trabajo"?

ProjectB depende de ProjectA (usando maven).

  1. Si instalamos ProjectA en el repositorio local (instalación de maven), ProjectB resuelve las dependencias OK.

  2. Si no instalamos ProjectA en el repositorio local. En Maven POM Editor agregamos ProjectA como dependencia de ProjectB (M2Eclipse usando el repositorio "workspace project" para resolver esta dependencia).

OK, agregue. Pero si hacemos un "paquete maven" u otras metas de complementos ... la dependencia no se resuelve. y tenemos algunas cosas por el estilo:

Descargando: http://repo1.maven.org/maven2/Artifact/ProjectA/maven-metadata.xml

y por supuesto que no se puede resolver.

Ahora es la pregunta. ¿Cómo puedo usar "Proyecto de área de trabajo" cuando construyo ProjectB?

P.S. ¿Por qué no estoy usando "maven install"? OK, es 100% método, pero cuando hago muchos pequeños cambios en varios es demasiado largo hago operaciones excesivas.

P.S.S. "Proyecto de área de trabajo" podemos ver Ventana -> Mostrar vista -> Repositorios Maven.

Respuesta

1
  1. La dependencia del espacio de trabajo debe ser resuelta. Prueba de esto,

    plazo> configuraciones de ejecución> Maven Construir> nueva> Seleccionar el proyecto B> comprobar "resolver Espacio de trabajo Artefacto"> objetivos establecidos como package

    seleccione desconectado casilla también.

  2. Tal vez, es necesario proporcionar exacta version de ProjectA en la etiqueta de la dependencia ProjectB. De lo contrario, puede parecer que el repositorio público de Maven sacará lo último.

Espero que esto ayude.

+0

1. no ayuda. "Descargando: http://repo1.maven.org/maven2/Project A .... pom". Intenta resolver usando el repositorio público. Se marca sin conexión inmediatamente escriba "Falta el POM para ProjectA, no hay información de dependencia disponible". 2. Se proporciona la versión. mmm ... el problema no está en el repositorio público. El problema está en resolver Proyecto de dependencia en el área de trabajo y no se instala en el repositorio local. – Alexander

0

Prueba esto (en ProjectB):

Maven > Enable Workspace Resolution 

Un problema similar se resolvió aquí de esa manera.

2

Creo que la idea de ejecutar el 'paquete Maven' u objetivos similares de Eclipse es hacer lo que maven hubiera hecho si se ejecuta desde la línea de comandos, por ejemplo. El escenario que estás dando tampoco habría funcionado en la línea de comandos.

Si el proyecto B depende del proyecto A (a través de pom.xml) eso significa que el proyecto A debe estar disponible en un repositorio. Si eso es local (a través de mvn install) o remoto a través de (mvn deploy) no importa, pero el paquete de mvn no es suficiente. Eso solo pondrá un paquete en la carpeta/target.

La única excepción sería si ambos proyectos residen en el mismo reactor, supongo, que ambos proyectos son módulos de algún otro proyecto 'padre'. En ese caso, desencadenar objetivos maven en uno de los submódulos podría resolver bien las dependencias. Sin embargo, no estoy 100% seguro.

Volver a su pregunta: "Ahora es la pregunta. ¿Cómo puedo usar el" Proyecto de área de trabajo "cuando construyo ProjectB?". No, no lo creo

+0

Si M2Eclipse está configurado correctamente, presionar "Proyecto> Construir todo" en Eclipse actuará como si ambos proyectos estuvieran en el mismo reactor y así funcionarán. Como bien adivinaste, solo cuando intentas "Ejecutar como> construir Maven ..." te metes en problemas porque eso lanzará la línea de comandos Maven. – JBert

Cuestiones relacionadas