有没有办法告诉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 ?
答案 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>
这里的两个重要设置是:
我希望对处于同样情况的人有所帮助。