使用 Maven 部署 Oracle Service Bus:从一个目录部署正常但从另一个目录部署失败

Deploying Oracle Service Bus With Maven: Deploys Fine From One Directory But Fails From Another

我正在尝试为 OSB(Oracle 服务总线)组合创建自动构建和部署。在构建服务器上设置 Maven 和 OSB 插件之后,这样的系统包含两个命令(运行 通过来自 POM 所在目录的命令提示符):

mvn package
mvn deploy -DoracleServerUrl=http://serverurl:port -DoraclUsername=username -DoraclePassword=password

这在构建系统中失败,出现以下异常:

The session cannot be activated due to the existence of conflicts.

但我相信,从根本上说,这是因为构建系统在构建阶段使用第一个命令创建包,然后在发布阶段使用第二个命令进行部署。

如果我直接拿代码和运行目录1中的两个命令: D:\OSBComposites\HelloWorldOSBService\HelloWorldOSBService 命令 运行 和复合部署正常。

如果我从字面上将相同的代码从目录 1 复制到目录 2,并且 运行 从目录 2 复制相同的命令: D:\OSBComposites\HelloWorldOSBService\HelloWorldOSBService2 第二个命令失败并出现上面引用的相同异常。

这也不是一次性的情况——我可以连续重现几十次。 运行 来自目录 1 的命令总是成功,而 运行来自目录 2 的命令总是失败,但出现上述异常。

是的,这是一个简单的默认 HelloWorld 组合 - 尽可能简单,不引用绝对路径。

Maven 或 OSB 中是否有缓存 "remembering" 首次部署组合的原始路径或阻止从不同位置部署组合的其他机制?

如果您的 pom.xml 驻留在 /path/directory1/pom.xml 中,您的 OSB 项目将被部署为 directory1 - 重新部署为 directory2 可能会导致您观察到的冲突。 如果您需要从不同的位置部署它,您可以将它放在 /path2/directory1/pom.xml

对于您的示例,这应该有效: 将项目内容复制到类似于下面的路径,然后 运行 maven 部署

D:\OSBComposites\HelloWorldOSBService2\HelloWorldOSBService