我有一个带有应用程序的EAR,我需要使用我自己的代码扩展这个应用程序,该代码打包为WAR。是否有maven插件可以帮助我将WAR置于EAR中?
手动过程是将WAR放入EAR并将模块添加到application.xml。我想自动化。
编辑:小澄清 - WAR项目正在使用maven但是对于EAR我只有二进制文件了。
答案 0 :(得分:46)
我创建了一个具有<packaging>ear</packaging>
。
在此ear模块的依赖项中,包含war
模块:
<dependency>
<groupId>com.your.group.id</groupId>
<artifactId>your-war-artifact</artifactId>
<version>your-war-version</version>
<type>war</type>
</dependency>
现在在这个耳模块的构建插件中,包括maven-ear-plugin,例如:
<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>
)并将war模块和ear模块添加到它。确保正确设置war和ear模块的<parent>
。
当您为这个新父项运行mvn package
时,war模块将构建一个war文件,并且ear模块将构建一个ear文件(包含war)。
答案 1 :(得分:0)
将WAR添加为依赖项并使用maven ear plugin。然后使用ear:generate-application-xml目标,最后使用ear:ear目标。