如何制作ear包

如何制作ear包

哪些内容打入ear包是如何确认的?

各个包在ear包放置的位置如何确认

1.如何制作ear包
可以在eclipse上建立一个maven jar工程,建完之后在pom.xml文件将该工程的packaging 定义ear
 <packaging>ear</packaging>
在pom.xml文件配置ear plugin

2.哪些内容会打入ear包
ear工程 的pom.xml中定义的dependency 决定了哪些 包会打入这个ear包
ear plugin会将pom.xml文件定义的直接依赖和直接依赖依赖的包打入到ear包
同时在ear包中会自动建立一个META-INF目录,里面放置MANIFEST.MF和application.xml

3.各个包在ear包放置的位置如何确认
直接依赖中type为ejb和type为war的包会放置在ear包的顶层目录
描述会被加到application.xml 

直接依赖中type为jar包和间接依赖的包会被打入到ear plugin的<defaultLibBundleDir>定义的目录中
如何没有定义,也会打到顶层目录中
如果想将这些包描述加入到application.xml中
可以在ear plugin的modules配置中配置

如果ear包需要依赖外部的包,对于jboss中部署的ear包可以在ear plugin的
<archive>
 <manifestEntries>
<Dependencies>中配置

示例如下:
<plugins>
            <plugin>
                <artifactId>maven-ear-plugin</artifactId>
                <version>2.8</version>
                <configuration>
                    <version>6</version>
                    <applicationName>myapp</applicationName>  //指定application name。默认会在META-INF下产生
application.xml.
                    <archive>
                        <manifestEntries>
                           //指定其依赖的外部包,会放置在包的META-INF的MANIFEST.MF文件中,可以运行时就可以找到外部包中的类了
     <Dependencies>deployment.example1.jar,deployment.example2.sar</Dependencies>
                        </manifestEntries>
                    </archive>
                    <defaultLibBundleDir>lib</defaultLibBundleDir>//指定jar包(非ejb,war包)放置位置,如果该包
在下面的module中没有配置,那么就放置在该目录中,否则以module配置的位置为准
                    <modules>
                        <javaModule>
                            <groupId>com.alex.soleil</groupId>
                            <artifactId>common</artifactId>
                            <includeInApplicationXml>true</includeInApplicationXml>//指定其包含在application.xml文件中
这样可以指定module启动的顺序
                            <bundleDir>./</bundleDir>//指定module放置的位置
                        </javaModule>
                        <webModule>
                            <groupId>com.alex.soleil</groupId>
                            <artifactId>rest-war</artifactId>
                            <contextRoot>/rest</contextRoot>//指定contextRoot,根url路径
                        </webModule>
                    </modules>
                </configuration>
            </plugin>

在形成的application.xml,会优先放置modules配置中指定的module,然后再按照dependency的顺序
放置type为ejb和war的包
EAR中的EJB是按照application.xml中定义的顺序加载




maven war plugin的行为
其分析pom.xml,依次分析各层依赖,把需要的jar包打入到这个war包的lib目录下

编译自己直接包含的类放在classes目录下
例如A依赖B, scope为provided, B 依赖于C,scope为compile
那么在编A war包的时候,就会将C包放到A war 包的lib目录下
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值