我正在尝试为OSB(Oracle Service Bus)组合创建自动构建和部署。在构建服务器上设置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中是否有缓存能够记住"记住"首次部署复合的原始路径还是阻止从其他位置部署复合的其他机制?
答案 0 :(得分:2)
如果您的pom.xml
位于/path/directory1/pom.xml
,您的OSB项目将部署为directory1
- 重新部署为directory2可能会导致您发现的冲突。
如果您需要从其他位置部署它,可以将其放在/path2/directory1/pom.xml
对于您的示例,这应该有效: 将项目的内容复制到类似于下面的路径,然后运行maven部署
D:\OSBComposites\HelloWorldOSBService2\HelloWorldOSBService