如何为现有的 Maven 项目创建 EAR 文件
How to create an EAR file for an existing Maven Project
我开发了一个 Web 应用程序,到目前为止我一直在本地测试使用 Tomcat
作为 server
。
我现在想转到 Oracle WebLogic Server 11gR1 (10.3.5)
以供进一步使用。查了一下,发现支持的文件有.ear
个,比如.war
个。由于我使用的是Eclipse
,所以我已经下载并安装了Weblogic Plugin
,并且也成功添加了server
。
但是,如果我想在 WebLogic
上部署 .ear
文件,我需要遵循哪些步骤?我现有的 Maven Project
是否需要特定的文件结构?
我无法从 eclipse
成功导出 .ear file
。据我所知,一旦 .ear
文件准备就绪,我就可以将其移动到我的 WebLogic
C:\*BaseDirectry*\*BaseName*\applications
文件夹,然后从那里 运行 它。
但是如何成功地为我现有的 maven
项目创建一个 .ear
文件?
在这些情况下,我建议的结构是让一个 maven 多模块项目提供您的应用程序模块(jar 包装)、一个 war 模块(war 包装)和一个 ear 模块(ear包装)以便明确分离关注点并让 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>
这意味着聚合器项目将指向存在于子文件夹 your.artifact.id-application、your.artifact.id-war 和 your.artifact.id-ear 中的 Maven 模块。
应用程序模块是一个简单的 Maven 项目,提供您的应用程序逻辑并从中构建一个 jar 文件。它不是强制性的,但它也可以作为聚合器项目的父项指向(聚合和继承在 Maven 中是两个不同的东西,可以混合在一起或以不同方式使用)。
您可以在模块中声明父项目如下:
<parent>
<groupId>your.group.id</groupId>
<artifactId>your.artifact.id-aggregator</artifactId>
<version>your.version</version>
</parent>
在application模块中,不需要指定打包,因为默认是jar,而在ear和war模块中,打包分别是ear和war。
war 模块需要将应用程序模块作为其依赖项。 WAR 模块也是放置集成测试的好地方。您还可以在此处配置 jetty maven 插件 start/stop 作为 pre/post-integration-test 阶段的一部分。
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>
注意 war。
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模块)。
我开发了一个 Web 应用程序,到目前为止我一直在本地测试使用 Tomcat
作为 server
。
我现在想转到 Oracle WebLogic Server 11gR1 (10.3.5)
以供进一步使用。查了一下,发现支持的文件有.ear
个,比如.war
个。由于我使用的是Eclipse
,所以我已经下载并安装了Weblogic Plugin
,并且也成功添加了server
。
但是,如果我想在 WebLogic
上部署 .ear
文件,我需要遵循哪些步骤?我现有的 Maven Project
是否需要特定的文件结构?
我无法从 eclipse
成功导出 .ear file
。据我所知,一旦 .ear
文件准备就绪,我就可以将其移动到我的 WebLogic
C:\*BaseDirectry*\*BaseName*\applications
文件夹,然后从那里 运行 它。
但是如何成功地为我现有的 maven
项目创建一个 .ear
文件?
在这些情况下,我建议的结构是让一个 maven 多模块项目提供您的应用程序模块(jar 包装)、一个 war 模块(war 包装)和一个 ear 模块(ear包装)以便明确分离关注点并让 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>
这意味着聚合器项目将指向存在于子文件夹 your.artifact.id-application、your.artifact.id-war 和 your.artifact.id-ear 中的 Maven 模块。 应用程序模块是一个简单的 Maven 项目,提供您的应用程序逻辑并从中构建一个 jar 文件。它不是强制性的,但它也可以作为聚合器项目的父项指向(聚合和继承在 Maven 中是两个不同的东西,可以混合在一起或以不同方式使用)。 您可以在模块中声明父项目如下:
<parent>
<groupId>your.group.id</groupId>
<artifactId>your.artifact.id-aggregator</artifactId>
<version>your.version</version>
</parent>
在application模块中,不需要指定打包,因为默认是jar,而在ear和war模块中,打包分别是ear和war。
war 模块需要将应用程序模块作为其依赖项。 WAR 模块也是放置集成测试的好地方。您还可以在此处配置 jetty maven 插件 start/stop 作为 pre/post-integration-test 阶段的一部分。 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>
注意 war。 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模块)。