Ich möchte, dass sich das JAR in einer Drittanbieter-Bibliothek in der Quellcodeverwaltung befindet und über den relativen Pfad aus der Datei pom.xml mit ihm verknüpft ist.
Wenn Sie dies wirklich möchten (verstehen Sie, wenn Sie kein Unternehmens-Repository verwenden können), würde ich empfehlen, ein für das Projekt lokales "Datei-Repository" zu verwenden und keinesystem Abhängigkeit mit Gültigkeitsbereich zu verwenden. Der systemUmfang sollte vermieden werden. Solche Abhängigkeiten funktionieren in vielen Situationen nicht gut (z. B. bei der Montage). Sie verursachen mehr Probleme als Vorteile.
Deklarieren Sie stattdessen ein lokales Repository für das Projekt:
<repositories>
<repository>
<id>my-local-repo</id>
<url>file://${project.basedir}/my-repo</url>
</repository>
</repositories>
Installieren Sie dort Ihre Drittanbieter-Bibliothek install:install-filemit dem folgenden localRepositoryPathParameter:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
Update: Es scheint, dass bei Verwendung der Version 2.2 des Plugins install:install-fileignoriert wird localRepositoryPath. Es funktioniert jedoch mit Version 2.3 und höher des Plugins. Verwenden Sie also den vollständig qualifizierten Namen des Plugins, um die Version anzugeben:
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>
Dokumentation zum Maven-Install-Plugin
Deklarieren Sie es schließlich wie jede andere Abhängigkeit (jedoch ohne den systemUmfang):
<dependency>
<groupId>your.group.id</groupId>
<artifactId>3rdparty</artifactId>
<version>X.Y.Z</version>
</dependency>
Dies ist meiner Meinung nach eine bessere Lösung als die Verwendung eines systemBereichs, da Ihre Abhängigkeit wie ein guter Bürger behandelt wird (z. B. wird sie in eine Versammlung aufgenommen und so weiter).
Jetzt muss ich erwähnen, dass der "richtige Weg", um mit dieser Situation in einem Unternehmensumfeld umzugehen (hier möglicherweise nicht der Fall), die Verwendung eines Unternehmensrepositorys wäre.
localRepositoryPath...