我的Maven項目對非Maven的庫,它被編碼爲系統依賴的依賴:Maven的停留在舊版本系統的依賴
<dependency>
<groupId>com.example</groupId>
<artifactId>foo</artifactId>
<version>${foo.version}</version>
<scope>system</scope>
<systemPath>${foo.jar}</systemPath>
</dependency>
在庫的位置可以通過本地控制屬性:
<properties>
<foo.version>2.1.1</foo.version>
<foo.basedir>/usr/local</foo.basedir>
<foo.libdir>${foo.basedir}/lib</foo.libdir>
<foo.jar>${foo.basedir}/java/foo-${foo.version}.jar</foo.jar>
</properties>
近日,從庫版本2.1.1切換到2.2.0版本,所以我改變了foo.version
屬性,但Maven的似乎是粘在舊版本:
...
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
Missing:
----------
1) com.example:foo:jar:2.1.1
...
我已經運行了mvn dependency:purge-local-repository
(實際上很多次)。字符串2.1.1
未出現在我的POM,profiles.xml
或settings.xml
中的任何位置。不過,每次我嘗試構建我的項目時,Maven都會因上述錯誤而失敗。
這是怎麼回事嗎? Maven在哪裏存儲依賴版本信息,我如何更新它?
第一個問題:通過本地屬性,在pom.xml的意思是,不是嗎?第二個(愚蠢的)問題:爲什麼不將foo JAR添加到您的本地存儲庫中(無論如何,您的當前設置都不可移植)。 – 2009-12-05 18:05:46
是的,這些屬性在POM的配置文件中定義。我可以將JAR添加到本地存儲庫,但它是本地庫的JNI綁定,所以我仍然需要解析本地屬性以設置鏈接器選項。如果'foo.version'卡在2.1.1,本地庫將不會鏈接。 – 2009-12-05 18:21:48