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 )
Ya hice una pregunta similar sobre el directorio del proyecto principal.
Puede ver el hilo aquí: propiedad Maven2 que indica el directorio padre