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.ear 从 elasticsearch-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
希望对遇到同样情况的人有所帮助
有没有办法告诉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 并且当然失败 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
希望对遇到同样情况的人有所帮助