我需要确保项目的干净maven部署。 我的意思是不是“清理部署”,而是在部署(覆盖)之前从OSB中删除现有项目。 如果您在OSB上覆盖项目,则无法确保其所有资源都将更新。当项目中的某些资源被覆盖而有些资源没有被覆盖时,我已经看到很多情况。这是一种非常不可预测的行为。 所以问题是:在部署之前强制更新项目是maven(maven服务总线插件还是其他一些像maven weblogic)的任务或参数?
答案 0 :(得分:1)
好吧,我找到了解决方案。这并不简单。其实我不喜欢它,但它有效。
我找到的唯一解决方案是使用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 admin username,password,url和其他 - 要删除的项目名称)。此构建步骤在每个服务部署之前执行。 这可以保证将最新版本的服务部署到OSB服务器。
编辑:不确定是否值得发帖,但我希望有人能在我的代码中找到有用的东西。所以这就是:
Maven build:
<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 $*