Eu quero que o jar esteja em uma lib de terceiros no controle de origem e vincule a ele pelo caminho relativo do arquivo pom.xml.
Se você realmente deseja isso (entenda, se você não pode usar um repositório corporativo), meu conselho seria usar um "repositório de arquivos" local para o projeto e não usar uma system
dependência de escopo. O system
escopo deve ser evitado, tais dependências não funcionam bem em muitas situações (por exemplo, na montagem), pois causam mais problemas do que benefícios.
Portanto, declare um repositório local para o projeto:
<repositories>
<repository>
<id>my-local-repo</id>
<url>file://${project.basedir}/my-repo</url>
</repository>
</repositories>
Instale sua biblioteca de terceiros usando install:install-file
o localRepositoryPath
parâmetro:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
Atualização: parece que install:install-file
ignora o localRepositoryPath
quando estiver usando a versão 2.2 do plugin. No entanto, ele funciona com a versão 2.3 e posterior do plug-in. Portanto, use o nome completo do plug-in para especificar a versão:
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>
documentação do maven-install-plugin
Por fim, declare-o como qualquer outra dependência (mas sem o system
escopo):
<dependency>
<groupId>your.group.id</groupId>
<artifactId>3rdparty</artifactId>
<version>X.Y.Z</version>
</dependency>
Esta é a IMHO uma solução melhor do que usar um system
escopo, pois sua dependência será tratada como um bom cidadão (por exemplo, será incluída em uma assembléia e assim por diante).
Agora, devo mencionar que o "caminho certo" para lidar com essa situação em um ambiente corporativo (talvez não seja o caso aqui) seria usar um repositório corporativo.
localRepositoryPath
...