Maven - 动态pom文件?

时间:2013-03-20 19:35:56

标签: maven websphere websphere-7

我正在使用Maven插件was6-maven-plugin部署到websphere。安装应用程序时,如果我正在安装新应用程序,那么名为"updateExisting"的配置值应为false,如果我正在更新现有应用程序,则为true。如果我是新安装/更新应用程序,我不喜欢手动切换此值。

我看到它的方式,我可以添加uninstallApp目标以在安装之前始终卸载应用程序,但这似乎是一种相当愚蠢的方法。

我注意到这个插件还有一个目标wsListApps,它输出服务器上安装的所有应用程序。输出如下:

[INFO]   [wsadmin] WASX7209I: Connected to process "server1" on node 1234Node02 using SOAP connector;  The type of process is: UnManagedProcess
[INFO]   [wsadmin] DefaultApplication
[INFO]   [wsadmin] IBMUTC
[INFO]   [wsadmin] MyApplicationEAR
[INFO]   [wsadmin] ivtApp
[INFO]   [wsadmin] query

Maven是否可以扫描此输出以获取字符串“MyApplicationEAR”并将“updateExisting”设置为“true”(如果找到),否则将其保留为“false”?

1 个答案:

答案 0 :(得分:2)

您需要的是能够在与was6-maven-plugin绑定的阶段之前的生命周期内更新maven属性。 (并将此属性用作<updateExisting>的值)

不幸的是,maven属性是静态的,无法在运行时更改。乍一看,这是不可能的。

但是,有一个插件:properties-maven-plugin可用于在运行时定义新属性。属性的值可以由groovy脚本定义。现在问题更多的是关于如何编写一个时髦的脚本来告诉你的应用程序是否已经存在。

老实说,我不知道使用它是否是个好主意。我认为每次运行卸载目标时failOnError设置为false可能是最简单的方法(可能是最好的,但也许我错过了什么?)