如何为现有Maven项目创建EAR文件

时间:2015-12-01 07:33:18

标签: java eclipse maven ear weblogic-10.x

我开发了一个Web应用程序,到目前为止,我使用Tomcat作为server进行本地测试。

我现在希望转到Oracle WebLogic Server 11gR1 (10.3.5)进一步使用。我查了一下,发现有.ear文件,例如.war文件,这些文件都受支持。由于我使用的是Eclipse,因此我已在其中下载并安装了Weblogic Plugin,并成功添加了server

但是,如果我希望在.ear上部署WebLogic文件,我需要遵循哪些步骤?是否存在我现有Maven Project需要的特定文件结构?

我无法从.ear file导出eclipse。我了解,一旦.ear文件准备就绪,我就可以将其移至我的WebLogic C:\*BaseDirectry*\*BaseName*\applications个文件夹并从那里运行。

但是,如何成功创建现有.ear项目的maven文件?

1 个答案:

答案 0 :(得分:1)

我建议在这些情况下的结构是有一个maven多模块项目提供你的应用模块(jar包装),一个战争模块(战争包装)和一个耳模块(耳包装),以便明确分离关注并让maven为每个模块构建一个工件。

如果您的项目当前是一个经典的maven项目,您可以创建一个聚合器模块项目(pom包装),如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>your.group.id</groupId>
    <artifactId>your.artifact.id-aggregator</artifactId>
    <packaging>pom</packaging>
    <version>your.version</version>

  <modules>
    <module>your.artifact.id-application</module>
    <module>your.artifact.id-war</module>
    <module>your.artifact.id-ear</module>
  </modules>
</project>

这意味着聚合器项目将指向子文件夹中存在的maven模块your.artifact.id-application,your.artifact.id-war和your.artifact.id-ear。 应用程序模块是一个简单的Maven项目,它提供应用程序逻辑并从中构建jar文件。它不是强制性的,但它也可以指向聚合器项目的父级(聚合和继承是Maven中的两个不同的东西,它们可以混合在一起或以不同方式使用)。 您可以在模块中声明父项目,如下所示:

<parent>
    <groupId>your.group.id</groupId>
    <artifactId>your.artifact.id-aggregator</artifactId>
    <version>your.version</version>
</parent>

在应用程序模块中,您不需要指定打包,因为默认情况下它会是jar,而在ear和war模块中,打包将分别是ear和war。

war模块需要将应用程序模块作为其依赖项。 WAR模块也是放置集成测试的好位置。你也可以在这里配置一个jetty maven插件启动/停止作为集成前/后集成测试阶段的一部分。 war模块还将提供所需的src \ main \ webapp \ WEB-INF结构

ear模块需要将war模块作为其依赖项,重要的是指定其类型war,如下所示:

<dependencies>
    <dependency>
        <groupId>your.group.id</groupId>
        <artifactId>your.application.id-war</artifactId>
        <version>your.version</version>
        <type>war</type>
    </dependency>
</dependencies>

注意战争。 ear模块还将提供所需的src \ main \ application \ META-INF结构。 ear模块可以简单地配置maven-ear-plugin:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <configuration>
                <modules>
                    <webModule>
                        <groupId>your.group.id</groupId>
                        <artifactId>your.artifact.id-war</artifactId>
                        <bundleFileName>your.artifact.id.war</bundleFileName>
                        <contextRoot>/your.artifact.id</contextRoot>
                    </webModule>
                </modules>
            </configuration>
        </plugin>
    </plugins>
</build>

它的application.xml文件(在src \ main \ application \ META-INF下)可以如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" "http://java.sun.com/dtd/application_1_3.dtd">
<application>
  <display-name>your.group.id.your.artifact.id_ear</display-name>
  <module>
    <web>
      <web-uri>your.artifact.id.war</web-uri>
      <context-root>/your.artifact.id</context-root>
    </web>
  </module>
</application>

它可能看起来过于复杂的结构,但它可以让您控制模块和人工制品,满足maven最佳实践并提高您的关注度(即应用程序代码仅在应用程序模块上,仅在war模块上进行集成测试)。