Quiero que el jar esté en una biblioteca de tercera parte en el control de fuente, y enlace a él por ruta relativa desde el archivo pom.xml.
Si realmente quiere esto (entienda, si no puede usar un repositorio corporativo), entonces mi consejo sería usar un "repositorio de archivos" local para el proyecto y no usar una system
dependencia con ámbito. Se system
debe evitar el alcance, tales dependencias no funcionan bien en muchas situaciones (por ejemplo, en el ensamblaje), causan más problemas que beneficios.
Entonces, en su lugar, declare un repositorio local para el proyecto:
<repositories>
<repository>
<id>my-local-repo</id>
<url>file://${project.basedir}/my-repo</url>
</repository>
</repositories>
Instale su lib de terceros install:install-file
con el localRepositoryPath
parámetro:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
Actualización: parece que install:install-file
ignora localRepositoryPath
cuando se utiliza la versión 2.2 del complemento. Sin embargo, funciona con la versión 2.3 y posterior del complemento. Por lo tanto, use el nombre completo del complemento para especificar la versión:
mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file \
-Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
documentación de plugin de instalación de maven
Finalmente, declare como cualquier otra dependencia (pero sin el system
alcance):
<dependency>
<groupId>your.group.id</groupId>
<artifactId>3rdparty</artifactId>
<version>X.Y.Z</version>
</dependency>
Esta es, en mi humilde opinión, una mejor solución que usar un system
alcance, ya que su dependencia será tratada como un buen ciudadano (por ejemplo, se incluirá en una asamblea, etc.).
Ahora, tengo que mencionar que la "forma correcta" de lidiar con esta situación en un entorno corporativo (quizás no sea el caso aquí) sería utilizar un repositorio corporativo.
localRepositoryPath
...