繁体   English   中英

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

[英]Building both war and ear files for same project using maven


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

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

谢谢,
帕万

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

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

你可以把它全部放在一个 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM