maven ear 部署命令

maven ear deploy order

有没有办法告诉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.earelasticsearch-search-service-bean.jar 调用 ejb 服务,所以 elasticsearch- search-service-ear 必须在 services-ear.

之前部署

当我 运行 maven 然后它首先尝试部署 services-ear 并且当然失败 No bean named elasticsearch-search-service-bean/SearchServiceBean 已定义:在 JNDI 环境中找不到

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

我像这样在 service-ear 项目中添加了一个依赖项,但它不起作用,而且 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:1.0 in http://repo.maven.apache.org/maven2 被缓存在本地仓库中,直到 central 的更新间隔结束或强制更新后才会重新尝试解析

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

终于找到解决方法了

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

因此,如果我想在 services-ear 之前部署 elasticsearch-search-service-ear,那么我需要添加一个新的依赖项进入 services-ear.

<!-- 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>

这里的两个重要设置是:

  • 范围需要 "provided",它阻止 elasticsearch-search-service-ear 库添加到 services-ear.
  • 类型需要"pom",以避免找不到...:elasticsearch-search-service-ear:jar

希望对遇到同样情况的人有所帮助