2013-10-15 55 views
6

我需要從戰爭項目中訪問一個bean類到我的另一個戰爭項目。該Bean類存在於MyProject中。我寫了另一個名爲NewProject的項目的pom,如下所示。maven中的戰爭項目依賴

<groupId>MyProject</groupId> 
    <artifactId>MyProject</artifactId> 
    <version>1</version> 
</parent> 
<artifactId>MyProject</artifactId> 
<packaging>war</packaging> 

是否有可能在另一個戰爭項目中添加戰爭依賴?

+1

請參閱http://jira.codehaus。org/browse/MNG-1991 –

+0

@ArnaudDenoyelle給出的問題與此處的問題無關。這個問題是關於傳遞性的依賴關係,而事實並非如此。 – khmarbaise

回答

1

依賴關係使用jar來工作,並且您通常會在.jar文件中定義一個公共依賴項,該文件可由.war s訪問。這不是Maven特有的,但是Java中的依賴關係如何工作。關於類的佈局方式,.war的內部結構與.jar不同。

因此,在Maven中,我期望定義一個.jar項目,然後兩個.war項目都取​​決於最初的項目。

16

如果你用下面的屬性配置maven-war-plugin

<attachClasses>true</attachClasses> 

你會得到具有以下座標的輔助神器:

<dependency> 
    <groupId>myGroup</groupId> 
    <artifactId>myArtifact</artifactId> 
    <version>myVersion</myVersion> 
<classifier>classes</classifier> 
</dependency> 

其中包含你的戰爭項目中的所有類可以是用作依賴關係,這是一個解決您的問題的jar文件。

+0

+1哦。尼斯。不知道 –

2

你最好在恕我直言中創建一個jar和你的項目需要的war類。

然後只需將依賴項添加到您的項目配置(classifier類)。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>classes</id> 
      <phase>compile</phase> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <configuration> 
       <classifier>classes</classifier> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+0

+1:我會那樣。 – carlspring

4

在你的戰爭項目

<plugin> 
<artifactId>maven-war-plugin</artifactId> 
<version>2.1.1</version> 
<configuration> 
    <attachClasses>true</attachClasses> 
</configuration></plugin> 

它創建了一個類的神器,你可以在需要的項目中使用

<dependency> 
<groupId>your-group-id</groupId> 
<artifactId>your-artifact-id</artifactId> 
<version>your-version</version> 
<classifier>classes</classifier> 

參考maven war plugin

希望它有幫助...

+0

'現在接受你的項目......?我不知道你想說什麼。你能糾正這個嗎? – carlspring

+0

它會創建一個您可以在所需項目中使用的類工件。 – Ashish

+0

閱讀引用的句子。 – carlspring

1

將您的可重用類移入單獨的模塊。這將有助於:

  • 更快地測試東西。

  • 將代碼作爲其他項目的依賴項使用。

或者,你可以通過使用maven-jar-plugin和生產基於分類神器產生類只罐子。不過,我認爲我的建議更好,因爲它可以讓您清楚地分離代碼並強制您更好地組織代碼。