2008-09-25 155 views
20

,我有兩個Eclipse項目 - 他們都使用Maven 2的所有jar的依賴善良。添加引用的Eclipse項目現在到Maven依賴關係

在eclipse中,我將項目Foo包含在項目Bar的構建路徑中,以便我可以使用項目Bar中的Foo的類。這個作品真的很好在eclipse的土地,但是當我嘗試:

mvn compile 

酒吧的目錄中,因爲Maven的不知道在Eclipse的構建路徑的項目到項目的關係失敗。

如果我使用的是ant,我只是用它來做一些傻事,比如將foo.jar複製到項目Bar的類路徑中,但據我所知,在Maven-land中做的事情遠沒有這麼做。

我想知道是否有這種類型的問題的標準解決方法 - 它似乎是相當普遍的,我只是缺少關於如何Maven的基本工作。

+0

aa ..拍..我以前做過這個。但現在找不到(在家)..如果在我回到辦公室的時候仍然沒有答案,我會爲您查找。 – paan 2008-09-25 21:45:50

回答

17

也許你正在通過Eclipse引用其它項目配置 - >只有構建路徑。只要你使用Eclipse來建立你的項目,這就可以工作。

嘗試在項目欄中運行第一個mvn install(以便將Bar放入Maven存儲庫),然後將依賴添加到Foo的pom.xml。

這應該工作!

1

我認爲處理它的最好方法就是使Bar成爲一個像Foo一樣的Maven項目,然後mvn install它就可以在您的本地Maven存儲庫中使用。其缺點是,你有你想要的Maven看到您對酒吧的變化,每次安裝項目。

+0

這正是人們想要避免的。如果你正在開發,你總是會改變一些東西。每次誰會想`mvn install`。 – T3rm1 2017-08-10 09:29:21

1

不完整的答案:
酒吧的pom需要包含Foo才能使用maven編譯它。
我感興趣的是這個問題太,而是從如何讓Eclipse能夠識別一個maven-添加依賴的角度看實際上是在同一個工作區的另一個項目。我目前在執行後更改構建路徑mvn eclipse:eclipse

8

檢查出m2eclipse插件。當您更改pom時,它會自動動態更新項目構建路徑。沒有必要運行mvn eclipse:eclipse

該插件還將檢測是否有任何依賴項位於同一個工作區中,並將該項目添加到構建路徑。

理想情況下,如果您使用m2eclipse,則永遠不會手動更改項目構建路徑。你總是會編輯pom.xml,這是正確的方法。

如前所述,Maven不會了解Eclipse項目的構建路徑。你需要將所有的依賴添加到聚甲醛,你需要確保所有的依賴關係是建立和運行mvn install首先安裝。

如果要使用單個命令構建兩個項目,那麼您可能會發現project aggregation有趣。

2

您可能想嘗試一種替代方法,其中您有一個父Maven項目和兩個子項目。讓我們說:

父(pom。XML有兩個孩子的項目/模塊) 引用 - > A(取決於B) - 「乙

那麼當你運行mvn日食:日食從父根,Maven會產生一個Eclipse項目和B,它將B作爲A的類路徑中的必需項目。

您可以從Parent的根目錄運行mvn install以使兩個項目都可以編譯。

要完成設置,您必須將A和B都導入到Eclipse中,確保不要選中「將項目複製到工作區中」。

0

如果你引用了一個本地項目,但它的版本已經更新(通常增加),它可能只能在你的本地倉庫中找到,你必須在你的POM中更新它的(可能是固定的)版本)。


我們有一個「共同項目」(到處被使用),它不一定需要,因爲我們通過源代碼控制標記它來進行版本控制。所以無論是

  • 將其保持在一個固定的版本或
  • 與特殊LATEST版本

引用它是好的解決方法永遠是在安全方面。

0

我只需要做到這一點,我需要它與外部mvn乾淨安裝命令。這裏是在Eclipse中配置這個的正確方法。 (將項目B作爲A的依賴項)

  1. 在Eclipse中打開項目A的pom.xml。
  2. 轉至Dependencies選項卡。
  3. 在頁面(左側依賴盒)
  4. 在彈出的中間點擊Add...按鈕,應該根據與文本行的盒子上面它說Enter groupId, artifactId or sha1 prefix or pattern (*):。將項目B的工件ID輸入到此框中。
  5. 雙擊你想作爲一個依賴添加到項目
    1. 您可能需要後更新項目的罐子。
    2. 右鍵單擊一個項目在你的Package Explorer
    3. 的Maven - >更新項目...
    4. 然後在彈出的點擊OK。
相關問題