2014-02-18 89 views
1

一個倉庫我有以下佈局的項目:Maven的:使用一個項目文件夾作爲LIB

enter image description here

我的目標是有MVN尋找項目的lib目錄作爲潛在的其他位置例如,在jven文件庫中找不到像j-text-utils.jar這樣的庫文件。所以我說這在pom.xml

<repositories> 
    <repository> 
     <id>lib</id> 
     <url>file://${project.basedir}/lib</url> 
    </repository> 
</repositories> 

我把這個想法從這裏:http://randomizedsort.blogspot.co.il/2011/10/configuring-maven-to-use-local-library.html

運行時編譯MVN,它未能找到項目文件夾中的相關庫。

上面有什麼問題嗎?

THX

+0

將lib文件夾中的所有文件安裝到存儲庫管理器中,這些文件不能從Central或其他倉庫獲得,並從那裏使用它們。這樣更好。例如guava可以從Maven中心獲得,因此您不需要手動安裝它們就可以使用Maven central。除此之外,您可以在[google使用j-text-utils](http://code.google.com/p/j-text-utils/)中使用該存儲庫,以便簡化處理。 – khmarbaise

回答

1

設置基於文件的存儲庫沒有任何問題。但首先,你的目錄結構需要符合groupid/artifactid。您應該使用

set localrepopath=C:\path_to_repo_rootdir 
call mvn install:install-file -Dfile=xyz-1.2.jar -DgroupId=com.foo -DartifactId=xyz -Dversion=1.2 -Dpackaging=jar -DlocalRepositoryPath=%localrepopath% -DcreateChecksum=true 

它將創建包含所有pom.xml,jar文件和其下的校驗和文件的目錄com \ foo \ 1.2。

然後,您需要在您自己的項目pom.xml中爲這些新安裝的工件定義依賴關係。

如果您不想設置本地存儲庫,只想將它們添加到編譯類路徑中,可以考慮使用「系統」作用域依賴關係,但它會使您的構建不可移植,並且一般不鼓勵。

+0

我已經擁有位於c:\ Users \ \ .m2 \ repository \中的mvn使用的存儲庫。這是否會覆蓋另一個存儲庫或者他們將一起生活。在概念層面,我試圖實現的目標是使用常見的mvn倉庫來存放公共jar,併爲特定的jar項目存儲庫,我不想在mvn常規存儲庫中使用它。 –

+0

.m2文件夾下的一個是本地存儲庫緩存。你可以刪除它,一旦你再次運行Maven項目,所有的工件將再次從中央倉庫+你自己的倉庫下載並存儲在.m2文件夾下。 – Lan

+0

巧妙地使用系統範圍可以讓其他事情中斷。有一個「開始項目」 - 在每個jar文件上運行mvn install的腳本允許Maven按預期工作。 –

0

你可以做到這一點(只是configure the maven-dependency-plugin正常),但我不會建議。

該方向可能存在一些缺點(例如,讓Jars可能進入您正在使用的存儲庫中,對於許多項目,最好在HDD的專用位置只有一個Jar,而不是其中之一在每個項目中等)。

+0

除非我誤解了這個建議,我不想將依賴項複製到我的項目文件夾中。我希望mvn在編譯應用程序時將我的//${project.basedir}/lib視爲依賴關係的可能存儲庫之一。 –

+0

噢!然後,您必須將其安裝到本地回購庫中,方法是使用'mvn install:install'建議@Lan。 – rlegendi

相關問題