我知道這可能聽起來像是錯誤的事情,但我試圖做的是有一個Maven POM(模塊),當安裝時將打包爲WAR,但另外還包含一個包含單個WAR的EAR。Maven使用分類器創建包含WAR的WAR和EAR作爲一個模塊?
澄清:我打算在我的項目自己的 EAR中包裝每個現有的WAR。我期待的理由是,我正在考慮重新組織我們發佈的WAR的方式,使每個WAR都包含在EAR中(但爲了簡化開發,仍然會生成獨立的WAR工件)。我不急於創建一個依賴於WAR的新模塊,並將它打包在EAR中,因爲我有大量的WAR。
<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">
<parent>
...
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>se-index-webapp</artifactId>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
...
</configuration>
</plugin>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.7</version>
<configuration>
<finalName>search-index.ear</finalName>
<classifier>ear</classifier>
<unpackTypes>war</unpackTypes>
<modules>
<webModule>
<groupId>${project.groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<uri>search-index.war</uri>
<bundleFileName>search-index.war</bundleFileName>
<contextRoot>/SearchIndex</contextRoot>
</webModule>
</modules>
</configuration>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
...
</dependencies>
</project>
我得到的錯誤:
目前我使用的是分類嘗試這一點,我現有的WAR模塊之一,沒有成功
Artifact[war:myproject:se-index-webapp] is not a dependency of the project
是我試圖做到可能嗎?
考慮在你的戰爭計劃你的pom.xml只能用戰爭解決,並部署在一個單獨的「部署,爲耳」的pom.xml調用。 – 2012-03-06 13:33:57
如果你想讓東西更乾淨,那麼這是不行的。據我所知,你試圖做的事是不可能的,因爲你隱含地創造了一個無限的依賴循環。您可以在Maven-user ML – 2012-03-06 13:42:59
上找到更好的選擇在工作中,我們創建了一個自定義maven插件,將項目依賴性和工件封裝在耳朵中,並根據工件類型創建部署描述符。與配置爲創建瘦戰的戰爭插件一起,這非常有效。這些項目最初是使用默認使用類似pakcaging的oracles jdeveloper創建的。我必須檢查我是否可以以某種方式發佈。 – 2012-03-06 21:30:44