pom maven maven-2

pom - Uso de maven ${basedir} en la configuración de varios módulos



pom maven (3)

Estoy usando un repositorio local como se describe en Maven: agregue una dependencia a un jar por ruta relativa .

El repositorio-url se define en el pom.xml superior como

<url>file:${basedir}/../3rdParty/maven-repository</url>

Además, el pom.xml superior define 2 módulos

<modules> <module>sub1</module> <module>sub2</module> </modules>

El problema es que si un módulo (por ejemplo, sub1 ) define una dependencia que debe descargarse desde el repositorio, y se llama a maven desde el directorio superior, ${basedir} no se establece en este directorio, sino en sub1 , lo que da como resultado un repositorio-URL incorrecto.

Entonces, digamos que el proyecto con el pom.xml más alto reside en

/Development/myproject/pom.xml

Y el repositorio está en

/Development/3rdParty/maven-repository

Luego, la URL del repositorio debe configurarse para

/Development/myproject/../3rdParty/maven-repository

pero resulta que está configurado para

/Development/myproject/sub1/../3rdParty/maven-repository

que por supuesto no existe.

¿Alguna idea de por qué es ese el caso?


¿Qué tal tener múltiples repos?

<repositories> <repository> <id>ibm-jars-bundle-lv0</id> <url>file://${basedir}/ibm-jars-bundle/repo</url> </repository> <repository> <id>ibm-jars-bundle-lv1</id> <url>file://${basedir}/../ibm-jars-bundle/repo</url> </repository> <repository> <id>ibm-jars-bundle-lv2</id> <url>file://${basedir}/../../ibm-jars-bundle/repo</url> </repository> </repositories>


Aunque es molesto en su caso, esto es bien conocido e intencional. Un proyecto de maven solo debe conocer su directorio de ejecución, sin importar en qué contexto se ejecute.

Pregunté casi la misma pregunta: la variable Maven para la raíz del reactor anterior, y la única respuesta que tenía sentido era usar ${user.dir} , aunque es raro y no funcionará si ${user.dir} desde un directorio de módulos.

(También existe esta solución muy detallada: propiedad Maven2 que indica el directorio principal )