如何制作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目录下