Usando Bamboo para build el proyecto Subversion / Maven que define POM (s) padre (s)

Tengo una estructura de proyecto compleja que dice algo como esto:

- root (no pom) - parent(parent pom.xml) + project A (pom.xml) + project B (pom.xml) - project C (pom.xml) - subproject 1 (pom.xml) - subproject 2 (pom.xml) + project N (pom.xml) 

Necesito build el subproject 2 usando el server Bamboo. Utilizo Bamboo para mvn install código del subproject 2 , pero cuando ejecuto mvn install , falla el post "POM principal no resoluble".

La compilation funciona bien cuando todo el código está en una sola location. No quiero registrar el código en el nivel de root , ya que hay toneladas de proyectos que no quiero verificar (en mi ejemplo serían los proyectos A, B, N y el subproyecto 1)

Intenté verificar el código 3 veces para el padre, proyecto C / pom y subproyecto 2, pero el código se coloca en directorys separados sin relación entre sí, por lo que no hay mucha ayuda allí

PD. No estoy usando modules, aunque lo intenté con modules y no importó. No estoy publicando los POM reales, ya que estos son muy triviales, básicamente, el pom hijo tiene un elemento parent y eso es toda relación que existe.

Todos los proyectos anteriores se implementan en repos locales y remotos

mvn searchá dependencies en tres lugares, en una ruta relativa en el sistema de files local, en caching en el repository m2 en su máquina local, o en un repository externo. Si instala todas las dependencies en un repository al que Bamboo puede acceder, su compilation probablemente funcione.

Para probar esto, en su máquina local, ¿puede hacer una installation mvn desde el directory raíz (colocando todas las dependencies en el repository m2 en su máquina), y luego seleccionar el subproyecto2 en un directory separado y luego instalar mvn subproject2?

Si eso funciona, entonces las dependencies del subproyecto 2 deben estar en un maven repo al que pueda acceder el bambú. Despliéguelos usando algo como artefacto antes de hacer mvn install with bamboo.

Tenemos una estructura de proyecto muy similar, y acabo de verificar que puedo crear un trabajo de Jenkins que solo verifica el equivalente del subproject1 y lo crea con mvn -U clean install . No tengo acceso a una instancia de Bamboo, pero tanto Jenkins como Bamboo solo invocan a Maven bajo el capó, por lo que no debería haber ninguna diferencia aquí.

La otra opción que funciona, como usted mencionó, es verificar el repository completo (o el directory que contiene la raíz y todos los modules) y ejecutar mvn -U clean install -pl subproject1 -am en el POM padre.

Para ayudarlo con esto, realmente necesitamos más información. Mencionaste en uno de tus comentarios que "todas las dependencies [en sentido ascendente] ya están desplegadas en el repository". ¿Te refieres a tu repository local (es decir, .m2 / repository)? Debe verificar que este directory contiene todos los POM principales. ¿Está resolviendo todos los artefactos de un proxy (es decir, Artifactory / Nexus)? Si es así, también verifique que los POM estén disponibles allí.

Su diagtwig de estructura actual no muestra la location de los POM. Supongo que lo tienes configurado correctamente, pero he visto casos en que las personas colocan modules secundarios en lugares extraños, lo que puede causar problemas. Las ubicaciones relativas de los POM importan (a less que realice alguna personalización). ¿Podría ejecutar tree en la raíz y desinfectar la salida para que sepamos exactamente dónde están sus POM uno en relación con el otro? Por ejemplo:

 parentProject |-- projectA | |-- pom.xml | |-- projectB | |-- pom.xml | | | |-- subProject1 | | |-- pom.xml | | | |-- subProject2 | |-- pom.xml | |-- pom.xml 

Por último, ¿podría navegar al proyecto / module hijo que está intentando build y publicar el resultado de la mvn help:effective-pom de mvn help:effective-pom ?

Cada uno de los modules de maven debe ser autónomo, utilizando enlaces relativos de los que habla ../parent rompe este layout.

Intenta definir explícitamente a los padres por las properties de GAV, y luego asegúrate de que estos poms se install en tu repository maven local y podrás crear subproyectos.

Ejecutamos 15 modules de compilation de 3 niveles y todo esto es posible.

El único problema que tienes es cuando topas las versiones, tendrás que iniciar una installation del file raíz pom para acelerar el process de resolución.