[英]Use local jar as artifact in maven dependency plugin?
我們有一個Maven項目,其中我們使用了一些遠程存儲庫中不存在的工件。 它們作為已編譯的.jar文件包含在我們項目的某個目錄(例如/ lib)中。 其中一些是“普通”依賴項,我們可以使用范圍系統+ systemPath在/ lib中使用,但是應該將一個工件與maven-dependency-plugin拆包目標一起使用。 pom.xml的相關部分如下所示
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-resources</id>
<phase>generate-resources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>xxx.yyy.zzz</groupId>
<artifactId>ourartifact</artifactId>
<outputDirectory>${target.directory}/somedir</outputDirectory>
<includes>
files1/**,files2/**,files3/**
</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
但是,這仍然嘗試到達遠程存儲庫並從那里獲取工件,這當然不會成功。 我們能否以某種方式實現也嘗試從/ lib提取此工件的情況?
與其從/ lib中獲取數據,不如現在設置自己的Nexus / Artifactory / etc ...,您可以將jar添加到本地存儲庫中。 每個人都必須在自己的計算機上執行此操作,但是一旦到達該位置,該計算機上的所有Maven構建項目都可以使用它,因此您不必為每個項目都擁有/ lib副本。 如果您自己編譯該jar,並且它是一個Maven項目,則可以執行“ mvn install”,它將安裝到本地存儲庫中。 請注意,mvn軟件包不會安裝到您的本地存儲庫中。
如果這是第3方jar,則可以使用mvn install:install-file來執行此操作。 為此,請按照https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html上的說明進行操作。
希望這可以幫助!
更新:通過本地存儲庫,我的意思可能與您在注釋中提到的含義有所不同-我的意思是每個用戶計算機上的本地存儲庫,而不是Intranet本地的存儲庫服務器。 對不起,如果引起任何混亂:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.