使用maven为同一项目构建war和ear文件

时间:2011-05-11 11:05:39

标签: java maven-2 ejb maven-plugin


在我的项目中,我有两个与Web相关的东西(jsps,controller,..)和EJB bean 现在我需要用web相关的东西构建war文件并将其部署到tomcat和
需要为EJB构建ear文件,并使用maven将其部署到jboss中。

任何人都可以建议我相应地修改pom.xml的解决方案。

谢谢你,

3 个答案:

答案 0 :(得分:3)

最好的方法是将项目拆分为多个子项目:一个构建EJB,一个构建WAR,第三个将它们打包在一起。这在Maven: The Complete Reference中有所描述,并在Better Builds with Maven中有一个示例。

答案 1 :(得分:1)

您需要使用个人资料。在pom.xml中的每个配置文件中,您可以指定您喜欢的任何配置。运行mvn -PyourProfileName时将应用该配置。

答案 2 :(得分:0)

您可以将所有内容都放在一个 pom.xml 中:

首先,制作/使用标准的“战争”pom.xml。

创建文件夹“src/main/application/META-INF”。

将耳朵相关文件,如“application.xml”(强制)、“jboss-app.xml”和/或“jboss-deployment-structure.xml”放在那里。

展开你的 pom.xml:

<resources>
    <resource>
        <directory>src/main/application</directory>
        <filtering>true</filtering>
        <includes>
            <include>META-INF/*.xml</include>
        </includes>
    </resource>
</resources>

进一步:

    <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>run</goal>
                </goals>
                <configuration>
                    <tasks>
                        <ear
                            destfile="${project.build.directory}/${project.build.finalName}.ear"
                            appxml="${project.build.outputDirectory}/META-INF/application.xml">
                            <fileset dir="${project.build.outputDirectory}"
                                includes="META-INF/*.xml" excludes="META-INF/application.xml" />
                            <fileset dir="${project.build.directory}"
                                includes="${project.build.finalName}.war" />
                        </ear>
                    </tasks>
                </configuration>
            </execution>
        </executions>
    </plugin>

提示:application.xml 应如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" id="Application_ID" version="6">
  <display-name>XXX.ear</display-name>
  <module>
    <web>
      <web-uri>XXX.war</web-uri>
      <context-root>XXX</context-root>
    </web>
  </module>
</application>