簡體   English   中英

在Maven中使用第3方項目作為依賴項

[英]Using 3rd party project as dependency in Maven

我有一個依賴於項目B的項目A。我從git repo下載了項目B,我在項目B中運行了“ mvn軟件包”和“ mvn install”,所以我將它保存在〜/ .m2 / repository目錄中。

我嘗試將項目A與“具有依賴關系的罐子”打包在一起,並且效果很好,但是我不希望所有依賴項都有一個大罐子。

當我把這個:

<dependency>
      <groupId>ch.usi.da</groupId>
      <artifactId>paxos</artifactId>
      <version>trunk</version>
</dependency>

命令“ mvn軟件包”可以正常工作,但是當我嘗試運行它時:

java -cp target/basecast-1.0-SNAPSHOT.jar ar.uba.dc.basecast.App

在線程“主” java.lang.NoClassDefFoundError中得到異常:ch / usi / da / paxos / Util錯誤。

我僅使用maven進行此操作,而不使用Eclipse。 我想保持簡單,並了解幕后發生的事情,也許Eclipse以更好的方式管理類路徑,但我想在沒有它的情況下進行操作。

更新:我忘了提到這個第三方項目B具有很多依賴性,因此將其.jar文件作為“ lib”包含在內並不是我的理想解決方案。 我想使用Maven依賴項解析,因為一切都安裝在本地存儲庫中。

如果您不想要一個胖子罐(這可能有很多原因),則必須首先確定要使用哪種其他機制來提供啟動應用程序的方法。 通常,您可以使用指向您使用的所有工件的Class-Path條目創建可執行jar,或者創建可以執行各種理智技巧的shell腳本,然后組裝指向您使用的所有工件的classpath變量,或者-在MacOS上- -打包一個應用程序。 高級部署可能包括WebStart。

在您當前的技能水平上,一個好的解決方案是使用具有以下坐標的appassembler-maven-plugin:

            <groupId>org.codehaus.mojo</groupId>
            <artifactId>appassembler-maven-plugin</artifactId>
            <version>1.10</version>

它具有適當的配置部分,可以創建您需要的腳本(在Unix和Windows上),並將您使用的工件放在正確的位置,所有這些均作為常規Maven構建的一部分。

有關完整說明,請參見http://www.mojohaus.org/appassembler/appassembler-maven-plugin/assemble-mojo.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM