使用Maven构建和部署J2EE应用程序的EAR文件
2016-01-30 09:14
633 查看
这篇文章。主要是技术上的整理,用来mark一下,用的时候參考。
一、新建项目
新建一个空的Maven Project项目二、放入依赖
注:ear部署时假设里面有entity,会错误发生。所以不要把entity放到依赖项中。部署的时候先部实体,然后再部ear。将须要打入EAR中的jar、war以dependencies-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,坐等成功吧~~
五、 更改pom的packaging
如今假设你直接Install的话,会发现并非打成的ear,而是打了jar。须要将packaging改为ear就可以。但改后会发现pom上面报错,你在eclipse应用广场搜一下m2e-wtp。然后安装就可以。
注:我的完整pom.xml
<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,那么
因为EJB在EAR中被部署后。绑定的JNDI前面会加上EAR的包名,如:
之前的CommonEao部署之后的JNDI名字为:common_EaoBean/remote,而如今会变成:gxpt_a_ear/commonEaoBean/remote;
七、总结:
做j2ee企业级开发。构建EAR是一项基本功。EAR仅仅是一种技术规范,依据不同的项目环境。会有不同的使用方法。在我们的项目中,适当的时候,会採用EAR作为作为组件的部署单位,让EAR包括一组EJB颗粒。起到分类的作用,同一时候也用于打包与组件相关联的辅助资源。配合Jenkins自己主动部署。使用maven
cargo插件很便利的就能够将项目部署到远程的jboss中。
相关文章推荐
- JS输入银行卡号,4位自动加空格
- 顺序表的就地倒置
- python string与list互转
- thinkphp整合ueditor(百度编辑器)方法详解
- 使用HTML5构建iOS8原生APP
- Python 8.4 进程 vs 线程
- Linux acpi off学习
- BZOJ 4326 运输计划 transport 【NOIP 2015】【树链剖分】
- Solr5.2的配置
- Solr5.2的配置
- 日经春秋 20160130
- iOS个人整理15-UIImagePickerController,照片选择器
- Android笔记 - Binder之数据结构(一)
- js为什么用工厂模式 Class.create
- 整理总结Java多线程程序编写的要点
- PHP - PHP Error[2]: Error while sending QUERY packet. PID=*
- 天声人語 20160130 鷽も嘆く悪辣詐欺
- OpenSSL
- SVN地址
- 找唯一不出现三次而出现1次的数子O(n)位运算算法