是否可以使用 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 服务器。
编辑:不确定是否值得发布,但我希望有人能在我的代码中找到有用的东西。所以这里是:
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>
undeployProject.sh 脚本:
. ${MW_HOME}/osb/tools/configjar/setenv.sh
${MW_HOME}/osb/tools/configjar/wlst.sh ../conf/WLST/undeployProject.py $*
我需要确定项目的干净 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 服务器。
编辑:不确定是否值得发布,但我希望有人能在我的代码中找到有用的东西。所以这里是:
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>
undeployProject.sh 脚本:
. ${MW_HOME}/osb/tools/configjar/setenv.sh
${MW_HOME}/osb/tools/configjar/wlst.sh ../conf/WLST/undeployProject.py $*