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 system
Umfang 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-file
mit dem folgenden localRepositoryPath
Parameter:
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-file
ignoriert 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 system
Umfang):
<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 system
Bereichs, 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
...