2016-07-07 97 views
1

我有一個eclipse項目,它有另一個項目的引用。
爲了在eclipse工作區中定義的服務器上進行部署,我在「屬性」 - >「Java構建路徑」和「屬性」 - >「部署程序集」中包含了這個其他項目。
此配置包含WEB-INF/lib目錄中的外部項目的jar。在maven生成的war中包含外部的eclipse項目作爲jar

現在我想用(右鍵單擊)「Run As」 - >「Maven install」命令生成一個war文件。
我已經添加了Maven的戰爭插件插件的POM:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
    </configuration> 
</plugin> 

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
     <failOnMissingWebXml>false</failOnMissingWebXml> 
     <webappDirectory>${project.build.directory}/${project.artifactId}</webappDirectory> 
     <warName>${project.artifactId}_${noVer}</warName> 
     <archive> 
      <addMavenDescriptor>false</addMavenDescriptor> 
      <manifest> 
       <addClasspath>false</addClasspath> 
      </manifest> 
      <manifestEntries/> 
      <manifestFile/> 
     </archive> 
    </configuration> 
</plugin> 

是否有可能包括其他項目作爲一個jar(自動)的戰爭嗎?

謝謝。

EDIT

「其它項目」 是在相同的工作區中的蝕項目。
其實是一個maven jar項目。
如前所述,它包含在原始項目中。
我想知道的是:
有沒有一種方法(plugin,directive ...)將這個ECLIPSE項目直接包含在原始項目的pom中?

<dependency> 
    <groupId>org.myproject</groupId> 
    <artifactId>other_eclipse_project</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
</dependency> 

,然後找到在WEB-INF/lib目錄

+0

我知道「其他項目」不是maven項目。正確? – JimHawkins

+0

應該是另一個eclipse maven項目 – notting65

回答

0

我建議你安裝「其他項目」的jar文件在你的本地倉庫一「other_eclipse_project.jar」。爲此,請使用maven install插件。有一些變體:

  1. 爲「其他項目」創建一個pom.xml並致電mvn install:install-file -Dfile=<path-to-file> -DpomFile=<path-to-pomfile>。在「其他項目」的POM中,指定它的依賴關係。
  2. 指定座標的Maven作爲參數:mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=jar

當你選擇的變體2,你不能(據我所知)指定「其他項目」的依賴。

當你這樣做了,你可以在你的maven項目中添加一個依賴到「其他項目」。

又見Install non-maven artifact in local repository

1

Ulrich的答案是正確的,但它只會增加被其他項目所產生的jar放到你的戰爭。如果您的其他項目依賴於其他罐子,則不會包含它們。

我會試圖將其他項目更改爲maven項目並將其所有依賴關係添加到它的pom,這樣您將獲得所有傳遞依賴項。

+0

我同意。當我寫回答時,對我來說似乎很清楚,只有一個外部庫(「其他項目」)不存在作爲Maven依賴關係。 – JimHawkins

0

也許你的意思是,eclipse有能力直接從工作區獲取maven依賴項。這個特色被稱爲「工作區分辨率」。打開「MyApp」上下文菜單,在「Maven」中,您可以激活工作區分辨率。在eclipse Mars中,它默認是禁用的(AFAIK)。

enter image description here

相關問題