是否可以使用 Maven "clean" 将 Oracle 服务总线项目部署到 OSB?

Is it possible to "clean" deploy Oracle service bus project to OSB using maven?

我需要确定项目的干净 Maven 部署。 我的意思不是 'mvn clean deploy',而是在部署(覆盖)之前从 OSB 中删除现有项目。 如果您覆盖 OSB 上的项目,则无法确定其所有资源都会更新。我见过很多项目中的某些资源被覆盖而另一些没有覆盖的情况。这是非常不可预测的行为。 所以问题是:是否有一些 maven(maven 服务总线插件或其他类似 maven weblogic)任务或参数在部署之前强制更新项目?

好吧,我找到了解决方案。这并不简单。其实我不喜欢它,但它有效。

我找到的唯一解决方案是使用 WLST 从 OSB 控制台删除服务(OSB 术语中的项目)。 我在 Martien van den Akker 的博客中找到的工作脚本在这里:http://blog.darwin-it.nl/2014/03/osb-remove-artefacts-with-wlst.html

可以使用脚本了。但这仅适用于 OSB 11,不适用于 OSB 12。 所以你可以使用这个解决方法:http://soamagic.blogspot.com/2016/05/osb-12c-java.html

在我的 CI 服务器(基于 Hudson)中,我添加了 Maven 构建步骤来启动 sh-script,它以 py-script 作为参数执行 wlst.sh(实际上有 4+ 个参数- weblogic 管理员用户名、密码、url 和其他 - 要删除的项目名称)。此构建步骤在每个服务部署之前执行。 这保证了最新版本的服务将部署到 OSB 服务器。

编辑:不确定是否值得发布,但我希望有人能在我的代码中找到有用的东西。所以这里是:

  1. Maven 构建:

    <profile> <id>undeployService</id> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.5.0</version> <executions> <execution> <id>wlst-undeploy-service</id> <phase>process-resources</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable> ${project.basedir}/../conf/WLST/undeployProject.sh </executable> <arguments> <argument> ${weblogic.username} </argument> <argument> ${weblogic.password} </argument> <argument> ${weblogic.url} </argument> <argument> ${project.artifactId} </argument> </arguments> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile>

  2. undeployProject.sh 脚本:

. ${MW_HOME}/osb/tools/configjar/setenv.sh ${MW_HOME}/osb/tools/configjar/wlst.sh ../conf/WLST/undeployProject.py $*