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 systemdependencia con ámbito. Se systemdebe 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-filecon el localRepositoryPathpará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-fileignora localRepositoryPathcuando 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 systemalcance):
<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 systemalcance, 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...