2017-09-02 57 views
0

我有兩個模塊,A和B,它們在同一個父項下。現在A需要B作爲依賴。我不能只使用jar作爲依賴類型,因爲模塊B使用spring-boot-maven-plugin,所以我想知道如何設置A的POM配置,使A取決於B的編譯類而不是jar<Maven>如何在Maven項目中將類文件添加爲依賴項(不是jar)?

- root 
    - A 
    - src   # module A's source code 
    - target 
     - classes # module A's compiled classes 
     - A.jar  # module A's compiled jar output 
    - pom.xml  # module A's mvn config 
    - B 
    - src   # module B's source code 
    - target 
     - classes # module B's compiled classes, HOW CAN I IMPORT THESE TO A? 
     - B.jar  # module B's mvn config 
    - pom.xml  # module B's mvn config 
    - pom.xml  # parent mvn config 

父MVN配置

... 
<modules> 
    <module>A</module> 
    <module>B</module> 
</modules> 
... 

模塊A MVN配置

... 
<parent> 
    <!- pointed to parent -> 
</parent> 
<dependencies> 
    <dependency> 
    <groupId></groupId> 
    <artifactId>B</artifactId> 
    <scope>??????????????</scope> # WHAT SHOULD I PUT HERE? 
    <type>???????????????</type> # WHAT SHOULD I PUT HERE? 
    </dependency> 
<dependencies> 
... 
+0

你需要B的類在運行時? – nullpointer

回答

3

首先:當A依賴於某些其他模塊的類,它必須依賴於罐子。你不能依賴於模塊的某些部分或者僅僅依賴於類。

所以讓我繪製一個解決方案:

  1. 如果(如果沒有包裝給定的標準,也是如此)B是的<packaging>jar</packaging>,那麼你可以使用它作爲依賴。您不需要範圍或類型條目。如果B是某些其他包裝(包括彈簧定義的包裝類型,我不是專家),那麼您應該定義從A到B的依賴關係。而不是定義第三個模塊C ,其中包括從A和B中使用的類,並讓它們都對C有依賴關係。

不要試圖構造對非JAR的依賴關係。如果你需要類,用這些類定義一個模塊,並在需要類時使用它。

+0

謝謝。你的第二個解決方案很有意義我測試過了! – Kim

-1

這裏是關於行家依賴性範圍和類型的良好信息。 https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

這應該適合你。 (未測試)

<scope>compile</scope> 
<type>jar</type> 
+0

從問題* make A取決於B的編譯類而不是jar *。你的解決方案如何滿足這個? – nullpointer

+0

這就是我提到編譯範圍的原因。如果我提供範圍作爲運行時,那麼它將在jar上。 – nagendra547

+1

您可以測試您的代碼並確認A是否在那裏使用B的jar。 – nullpointer

相關問題