2015-12-01 57 views
2

我开发了一个Web应用程序,到目前为止我使用Tomcat作为本地测试server如何为现有的Maven项目创建EAR文件

我现在想搬到Oracle WebLogic Server 11gR1 (10.3.5)以备后用。我抬起头,发现有.ear文件,如支持的.war文件。由于我使用Eclipse,因此我已经下载并安装了Weblogic Plugin并成功添加了server

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

我无法成功地从eclipse导出.ear file。我知道,一旦.ear文件准备就绪,我可以将其移动到我的​​C:\*BaseDirectry*\*BaseName*\applications文件夹并从那里运行它。

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

回答

1

我建议在这些情况下的结构是有一个maven multimodule项目提供您的应用程序模块(罐子包装),战争模块(战争包装)和耳朵模块(耳朵包装),以便有明确的分离的问题,并让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现有的子文件夹中的模块。 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> 

在应用模块,你并不需要指定包装,因为默认情况下它会罐,而耳朵和战争的模块中,包装将分别是耳朵和战争。

战争模块将需要应用程序模块作为其依赖项。 WAR模块也是进行集成测试的好地方。你也可以在这里配置一个jetty maven插件开始/停止,作为前/后整合测试阶段的一部分。 战争模块还将提供所需的src \ main \ webapp \ WEB-INF结构

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

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

注意战争。 耳机模块也将提供所需的src \ main \ application \ META-INF结构。 耳模块可以配置Maven的耳插件,只需如下:

<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 \主\程序\ 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模块上)。

+0

声音可行。虽然我没有办法简单地创建一个'.ear'?我看到一个选项可以在'eclipse'中导入一个'.ear'项目,然而,我无法理解为什么这不起作用。 – TheLuminor

+0

我实际上发现了两个相关的答案,提供了几乎相同的方法:http://stackoverflow.com/questions/1134894/maven2-best-practice-for-enterprise-project-ear-file和http://stackoverflow.com/问题/ 6829961/create-complete-ear-project-with-maven-and-eclipse-helios,而这里http://javahonk.com/create-maven-ear-project-eclipse/还有一步一步的例如,我没有阅读整篇文章,但他又提供了实施相同方法的指导。 –

+0

链接 - http://javahonk.com/create-maven-ear-project-eclipse/这张照片是张贴的,是我能够理解的。所以,在他开始说的地方 - “创建父模块:JavaHonkParent 单击文件 - >新建 - >其他 - > Maven - > Maven项目然后单击下一步 - - 第一步,他正在创建一个空的'maven'项目和建立'.war'文件和'.jar'文件,并进一步将它们添加到父'.ear'文件 - 所有的声音和看起来不错。完全意义。但是,他创建了一个空的项目,并可能稍后再开展工作。我已经有一个项目。我该怎么做? – TheLuminor