maven ear部署订单

时间:2015-04-15 20:17:44

标签: maven deployment ear

有没有办法告诉maven ear文件的部署顺序?

我有以下项目结构:

app
 |- pom.xml
 |
 |- commons (jar)
 |   |-pom.xml
 |
 |- integration (pom)
 |   |-pom.xm
 |   |
 |  ...
 |   |
 |   |-elasticsearch-search-service (pom)
 |      |-pom.xml
 |      |
 |      |-elasticsearch-search-service-bean (jar)
 |      |  |-pom.xml
 |      |
 |      |-elasticsearch-search-service-ear (ear)
 |         |-pom.xml
 |
 |- services (pom)
     |-pom.xml
     |
     |-search-service (jar)
     |   |-pom.xml
     |
    ...
     |
     |-restapi-web (war)
     |   |-pom.xml
     |
     |-services-ear(ear)
         |-pom.xml

commons.jar 打包在每个耳朵的lib文件夹下。 services.ear elasticsearch-search-service-bean.jar 调用ejb服务,因此必须部署 elasticsearch-search-service-ear services-ear 之前。

当我运行maven时,它首先尝试部署 services-ear ,当然它失败了没有bean命名为elasticsearch-search-service-bean / SearchServiceBean已定义:未找到在JNDI环境中

当我以正确的顺序手动部署耳朵时,一切正常。

我在这样的 service-ear 项目中添加了一个依赖项,但它不起作用,并且没有在其他人之前部署耳朵:

<dependency>
    <groupId>...</groupId>
    <artifactId>elasticsearch-search-service-bean</artifactId>
    <version>...</version>
    <scope>provided</scope>
</dependency>

如果我尝试将 elasticsearch-search-service-ear 依赖项添加到 service-ear 项目中,那么部署顺序没问题,但我得到了以下异常:

引起:org.apache.maven.project.DependencyResolutionException:无法解决项目的依赖关系......:services-ear:ear:1.0:找不到...:elasticsearch-search-service- ear:jar http://repo.maven.apache.org/maven2中的1.0缓存在本地存储库中,在中心的更新间隔过去或强制更新之前,不会重新尝试解析

我如何告诉maven开始在另一只耳朵之前部署 elasticsearch-search-service-ear

1 个答案:

答案 0 :(得分:1)

最后我找到了解决方案。

告诉maven部署顺序的唯一方法是定义poms之间的依赖关系。

因此,如果我想在 services-ear 之前部署 elasticsearch-search-service-ear ,那么我需要在 services-ear <中添加新的依赖项/ em>的

<!-- elasticsearch-search-service.ear needs to be deployed before services.ear -->
<dependency>
    <groupId>...</groupId>
    <artifactId>elasticsearch-search-service-ear</artifactId>
    <version>...</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

这里的两个重要设置是:

  • 范围需要&#34;提供&#34;,它会阻止 elasticsearch-search-service-ear 库添加到 services-ear 。< / LI>
  • 类型需要&#34; pom&#34;,以避免无法找到...:elasticsearch-search-service-ear:jar

我希望对处于同样情况的人有所帮助。