2016-07-27 74 views
-1

我有一個maven項目(Proj1)。在我的java類中,我必須調用另一個maven proj(proj2)的方法。Java項目依賴於另一個項目

這裏我得到各種編譯時錯誤,因爲該方法在我當前的項目(proj1)中不可用。 爲了解決這個問題,我將整個方法代碼粘貼到當前的java類中。 現在該方法在我的項目中可用。但是那個方法再次調用其他類中的其他代碼,這些代碼在我當前的項目中再次不可用。 我再次需要複製和粘貼其他類的所有依賴代碼。 這繼續下去,循環依賴關係在那裏,所以只是想知道我如何解決這個錯誤。 我有幾個選項來解決這個問題。

  1. 從proj2所有類的採取源做一個罐子出來的這一點,包括在罐子我的類路徑 這解決了一些錯誤,但隨後有來自第三方的罐子它仍然給錯誤的一些課程。
  2. 現在我正在計劃第二個選項,其中我有proj2的pom.xml。 我創建了這個。因此所有必需的罐子都會從倉庫下載。 這個proj的輸出又是名爲proj2.jar的jar。

現在的問題是

  1. 如果我只包括proj2.jar在我的代碼,然後將它解決所有的依賴?
  2. 或者我需要手動添加Proj1類路徑中的所有罐子proj2
  3. 或者我需要添加proj2的src以及來自proj2.jar的罐子?
  4. 或者是否有比上述選項更好的方法?
+1

只是添加它作爲你的pom.xml的依賴,和Maven將會處理它。這基本上就是maven的用途。 – Stultuske

+0

嘿,謝謝你的回覆。所以基本上我只需要構建project2,它將創建proj2.jar,然後將該jar文件添加到proj1類路徑中?我對麼? – Sachin

+0

沒有。你只需要在你的倉庫中放置你的project2,並告訴你的其他項目的pom.xml你的project2存在依賴關係。 在構建時,它將從存儲庫獲取project2並將其添加到本地存儲庫,準備使用 – Stultuske

回答

3

使所有你的項目使用maven。 pom.xml中添加到您的項目的根目錄與下面的頭(我不知道你的包裝結構,使com.sachin是佔位符,你可以問IDE添加對你Maven的支持。):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.sachin</groupId> 
    <artifactId>Proj2</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <name>My Proj2</name> 

添加相同的報頭Proj1Proj1添加依賴關係Proj2

<dependency> 
    <groupId>com.sachin</groupId> 
    <artifactId>Proj2</artifactId> 
    <version>1.0-SNAPSHOT</version> 
</dependency> 

maven buildProj2將作爲JAR依賴於Proj1

如果我在我的代碼中只包含proj2.jar,那麼它會解決所有的 依賴?

如果您proj2.jarpom.xml依賴proj2.jar用途 - 然後他們將使用maven的proj1建設過程中獲取。

官方文檔中關於Maven Dependency Mechanism

+0

嘿Rudziankoŭ謝謝你的回覆。你是對的。再次感謝。 – Sachin

+0

你必須在兩個項目上執行mvn build。在存在pom.xml的根目錄中。之後檢查你的本地Maven倉庫,找到proj2.jar。之後,確保你的IDE或路徑「sys_var」知道本地存儲庫的位置 –

+0

嗨,我用你的方法來成功配置依賴。非常感謝。但我有一個問題。你的方法與「 ...」有什麼區別? –

相關問題