我有一個應用程序的EAR,我需要用我自己的代碼打包成WAR。有沒有一個Maven插件可以幫助我將WAR放入EAR中?如何在EAR中添加WAR與Maven
手動過程是將WAR放入EAR中並將模塊添加到application.xml。我想自動化。編輯:小澄清 - WAR項目使用maven但是對於EAR我只有二進制文件沒有更多。
我有一個應用程序的EAR,我需要用我自己的代碼打包成WAR。有沒有一個Maven插件可以幫助我將WAR放入EAR中?如何在EAR中添加WAR與Maven
手動過程是將WAR放入EAR中並將模塊添加到application.xml。我想自動化。編輯:小澄清 - WAR項目使用maven但是對於EAR我只有二進制文件沒有更多。
添加WAR作爲依賴關係,並使用maven ear plugin。然後使用ear:generate-application-xml目標,最後使用ear:ear目標。
我會創建一個新的模塊,它有<packaging>ear</packaging>
。
在依賴此耳模塊,包括你的war
模塊:
<dependency>
<groupId>com.your.group.id</groupId>
<artifactId>your-war-artifact</artifactId>
<version>your-war-version</version>
<type>war</type>
</dependency>
在構建插件,這款耳塞模塊
現在,包括Maven的耳插件,例如像:
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<finalName>MyEarFile</finalName>
<version>5</version>
<generatedDescriptorLocation>${basedir}/src/main/application/META-INF</generatedDescriptorLocation>
<modules>
<webModule>
<groupId>com.your.group.id</groupId>
<artifactId>your-war-artifact</artifactId>
<uri>YouWarFile.war</uri>
<bundleFileName>YouWarFile.war</bundleFileName>
<contextRoot>/appname</contextRoot>
</webModule>
</modules>
</configuration>
</plugin>
您可以根據需要更改webModule
的特定配置值。
現在創建一個父模塊(與<packaging>pom</packaging>
),並添加戰爭模塊和耳模塊。確保你正確地設置了戰爭和耳朵模塊的<parent>
。
當你爲這個新父母運行mvn package
時,戰爭文件將由war模塊構建,ear文件(包含戰爭)將由ear模塊構建。
我是否必須將WAR作爲依賴項添加到EAR pom.xml中?它將如何知道我的WAR在web模塊中的位置? – Tushar 2012-10-25 13:31:43
你試過了嗎?如上所述,您需要耳機模塊的依賴性。 maven-ear-plugin不需要war文件的確切位置/路徑,因爲它將其稱爲maven工件(使用webModule元素中指定的groupId和artifactId)。 – joelittlejohn 2012-10-26 11:05:01
@joelittlejohn爲什麼我需要兩次聲明神器「你的戰爭神器」?一旦進入依賴部分,並再次進入'webModule'部分?你能解釋一下嗎? – Geek 2016-07-11 13:02:09
也許我錯過了一些東西,但我不知道如何使用Maven耳塞。問題是我沒有該EAR的來源。 – stalker 2011-03-02 12:13:41
如果您有EAR文件,您可以將其解壓縮:http://maven.apache.org/plugins/maven-ear-plugin/examples/unpacking-a-module.html,然後添加戰爭,更改application.xml並將其打包再次。 – 2011-03-02 12:24:22