使用Maven构建和部署J2EE应用程序的EAR文件

简介:

新建一个空的Maven Project项目



注:ear部署时假设里面有entity,会错误发生。所以不要把entity放到依赖项中。部署的时候先部实体,然后再部ear

将须要打入EAR中的jarwardependencies-dependency的形式写到pom.xml文件里。如:



如今打出来的ear包中的application中仅仅有war的配置信息,而没有jar的配置信息,而我们假设想控制这些jar的配置信息,就必须把jar的信息配置到application.xml中,而application.xml是能够通过此插件生成的。所以在pom.xml文件里配置就可以。配置方式例如以下:


假设如今打包,会报一个没有发现application.xml的错误,这个文件须要我们自己创建么?答案是不须要:

1.       执行ear: generate-application-xml。会生成对应的application.xml文件,以下是我的pom生成的application.xml文件(格式有修改):



2.       同一时候。此命令还生成一个jboss-app.xml的文件。里面简单一一句话,是说要JBoss依照application.xml里面的声明顺序载入



3.       如今能够运行生成ear的命令了:ear:ear,坐等成功吧~~


五、 更改pompackaging

如今假设你直接Install的话,会发现并非打成的ear,而是打了jar。须要将packaging改为ear就可以。

但改后会发现pom上面报错,你在eclipse应用广场搜一下m2e-wtp。然后安装就可以。

<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/xsd/maven-4.0.0.xsd">
         <modelVersion>4.0.0</modelVersion>
         <parent>
                   <groupId>com.tgb</groupId>
                   <artifactId>gxpt</artifactId>
                   <version>0.0.1-SNAPSHOT</version>
                   <relativePath>../gxpt/pom.xml</relativePath>
         </parent>
         <artifactId>gxpt_a_ear</artifactId>
         <packaging>ear</packaging>
 
         <dependencies>
                  <dependency>
                            <groupId>com.tgb</groupId>
                            <artifactId>gxpt_entity_qx</artifactId>
                            <version>0.0.1-SNAPSHOT</version>
                            <type>jar</type>
                   </dependency>
                   <dependency>
                            <groupId>com.tgb</groupId>
                            <artifactId>gxpt_common_tool</artifactId>
                            <version>0.0.1-SNAPSHOT</version>
                            <type>jar</type>
                   </dependency>
                   <dependency>
                            <groupId>com.tgb</groupId>
                            <artifactId>gxpt_common_eao</artifactId>
                            <version>0.0.1-SNAPSHOT</version>
                            <type>jar</type>
                   </dependency>
                   <dependency>
                            <groupId>com.tgb</groupId>
                            <artifactId>gxpt_common_eao_impl</artifactId>
                            <version>0.0.1-SNAPSHOT</version>
                            <type>jar</type>
                   </dependency>
                   <dependency>
                            <groupId>com.tgb</groupId>
                            <artifactId>gxpt_mgr_qx_module</artifactId>
                            <version>0.0.1-SNAPSHOT</version>
                            <type>jar</type>
                   </dependency>
                   <dependency>
                            <groupId>com.tgb</groupId>
                            <artifactId>gxpt_mgr_qx_module_impl</artifactId>
                            <version>0.0.1-SNAPSHOT</version>
                            <type>jar</type>
                   </dependency>
                   <dependency>
                            <groupId>com.tgb</groupId>
                            <artifactId>gxpt_web_qx_module</artifactId>
                            <version>0.0.1-SNAPSHOT</version>
                            <type>war</type>
                   </dependency>
         </dependencies>
 
         <build>
                   <plugins>
                            <plugin>
                                     <artifactId>maven-ear-plugin</artifactId>
                                     <version>2.9</version>
                                     <configuration>
                                              <packagingIncludes>META-INF/**,**/gxpt_*.jar,**/gxpt_*.war</packagingIncludes>
                                               <jboss>
                                                        <version>5</version>
                                                        <module-order>strict</module-order>
                                               </jboss>
                                               <modules>
                                                        <jarModule>
                                                                 <groupId>com.tgb</groupId>
                                                                 <artifactId>gxpt_entity_qx</artifactId>
                                                                 <includeInApplicationXml>true</includeInApplicationXml>
                                                        </jarModule>
                                                        <jarModule>
                                                                 <groupId>com.tgb</groupId>
                                                                 <artifactId>gxpt_common_tool</artifactId>
                                                                 <includeInApplicationXml>true</includeInApplicationXml>
                                                        </jarModule>
                                                        <jarModule>
                                                                 <groupId>com.tgb</groupId>
                                                                 <artifactId>gxpt_common_eao</artifactId>
                                                                 <includeInApplicationXml>true</includeInApplicationXml>
                                                        </jarModule>
                                                        <jarModule>
                                                                 <groupId>com.tgb</groupId>
                                                                 <artifactId>gxpt_common_eao_impl</artifactId>
                                                                 <includeInApplicationXml>true</includeInApplicationXml>
                                                        </jarModule>
                                                        <jarModule>
                                                                 <groupId>com.tgb</groupId>
                                                                 <artifactId>gxpt_mgr_qx_module</artifactId>
                                                                 <includeInApplicationXml>true</includeInApplicationXml>
                                                        </jarModule>
                                                        <jarModule>
                                                                 <groupId>com.tgb</groupId>
                                                                 <artifactId>gxpt_mgr_qx_module_impl</artifactId>
                                                                 <includeInApplicationXml>true</includeInApplicationXml>
                                                        </jarModule>
                                                        <webModule>
                                                                 <groupId>com.tgb</groupId>
                                                                 <artifactId>gxpt_web_qx_module</artifactId>
                                                                 <includeInApplicationXml>true</includeInApplicationXml>
                                                        </webModule>
                                               </modules>
                                     </configuration>
                            </plugin>
                   </plugins>
         </build>
</project>

六、部署到JBoss

1、首先确认你连接的仓库,默认的中央仓库上面是没有JBoss的包的。须要配置一下开源中国的私服库。

具体请查看:http://maven.oschina.net/help.html。官方给的配置非常具体。

2、配置Cargo

<plugin>
         <groupId>org.codehaus.cargo</groupId>
         <artifactId>cargo-maven2-plugin</artifactId>
         <version>1.4.5</version>
         <configuration>
                   <container>
                            <containerId>jboss51x</containerId>
                            <type>remote</type>
                   </container>
                   <configuration>
                            <type>runtime</type>
                            <properties>
                                     <cargo.remote.username>admin</cargo.remote.username>
                                     <cargo.remote.password>admin</cargo.remote.password>
                                     <cargo.hostname>192.168.24.48</cargo.hostname>
                                     <cargo.rmi.port>1099</cargo.rmi.port>
                            </properties>
                   </configuration>
         </configuration>
         <dependencies>
                   <dependency>
                            <groupId>org.jboss.integration</groupId>
                            <artifactId>jboss-profileservice-spi</artifactId>
                            <version>5.1.0.GA</version>
                   </dependency>
                   <dependency>
                            <groupId>org.jboss.jbossas</groupId>
                            <artifactId>jboss-as-client</artifactId>
                            <version>5.1.0.GA</version>
                            <type>pom</type>
                   </dependency>
         </dependencies>
</plugin>

3、将此项目运行clean install后,然后就能够运行cargo:deploy了。通过此命令就能够将项目部署到远程JBoss中了。


须要注意的一点。假设用到了spring,通过jndi查找ejb,那么

因为EJBEAR中被部署后。绑定的JNDI前面会加上EAR的包名,如:

之前的CommonEao部署之后的JNDI名字为:common_EaoBean/remote,而如今会变成:gxpt_a_ear/commonEaoBean/remote


七、总结:

做j2ee企业级开发。构建EAR是一项基本功。EAR仅仅是一种技术规范,依据不同的项目环境。会有不同的使用方法。在我们的项目中,适当的时候,会採用EAR作为作为组件的部署单位,让EAR包括一组EJB颗粒。起到分类的作用,同一时候也用于打包与组件相关联的辅助资源。配合Jenkins自己主动部署。使用maven cargo插件很便利的就能够将项目部署到远程的jboss中。






本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5170491.html,如需转载请自行联系原作者

相关文章
|
2月前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
61 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
2月前
|
Java 测试技术 Maven
Maven clean 提示文件 java.io.IOException
在使用Maven进行项目打包时,遇到了`Failed to delete`错误,尝试手动删除目标文件也失败,提示`java.io.IOException`。经过分析,发现问题是由于`sys-info.log`文件被其他进程占用。解决方法是关闭IDEA和相关Java进程,清理隐藏的Java进程后重新尝试Maven clean操作。最终问题得以解决。总结:遇到此类问题时,可以通过任务管理器清理相关进程或重启电脑来解决。
|
2月前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
177 8
|
3月前
|
缓存 IDE Java
idea的maven项目打包时没有source下的文件
【10月更文挑战第21天】idea的maven项目打包时没有source下的文件
134 1
|
3月前
|
Java Maven
用graalvm将maven项目打包成可执行文件
本文介绍了如何使用GraalVM将Maven项目打包成可执行文件,包括引入依赖和插件、编写代码、执行打包命令以及运行查看结果的完整过程。
206 0
用graalvm将maven项目打包成可执行文件
|
5月前
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
63 1
|
5月前
|
Java Maven Spring
Maven重打包问题之maven-shade-plugin插件对于重复的class文件会如何处理
Maven重打包问题之maven-shade-plugin插件对于重复的class文件会如何处理
108 2
|
5月前
|
Java Linux Maven
部署安装maven和mvnd
部署安装maven和mvnd
|
6月前
|
自然语言处理 Java Maven
Maven 自动化构建
Maven自动化构建确保依赖稳定性。`bus-core-api(1.0-SNAPSHOT)`构建后,自动触发`app-web-ui`和`app-desktop-ui`的构建,两者均依赖bus-core-api的1.0快照版。 ``` 纯文本摘要: Maven自动化构建保证依赖项的稳定性:当`bus-core-api`的1.0-SNAPSHOT版本完成构建时,它会触发依赖它的`app-web-ui`和`app-desktop-ui`项目的构建,这两个项目都依赖`bus-core-api`的相同版本。
|
6月前
|
Java 测试技术 Maven
Maven 构建生命周期
Maven生命周期包括clean(clean目标清理输出),default(validate到deploy执行编译、测试、打包、验证、安装和部署),site(site与deploy-site生成发布站点)。每个阶段由插件目标组成,如mvn clean package执行清理和打包。生命周期阶段按顺序执行,目标可在阶段外独立调用。