如何从 WebSphere Liberty Maven 插件部署到 WebSphere Liberty 应用程序目录?
Posted
技术标签:
【中文标题】如何从 WebSphere Liberty Maven 插件部署到 WebSphere Liberty 应用程序目录?【英文标题】:How to deploy to WebSphere Liberty apps directory from WebSphere Liberty Maven plugin? 【发布时间】:2017-05-24 03:31:34 【问题描述】:我有一个在 WebSphere liberty 中运行的应用程序。通过 mvn install 命令,我需要将我的应用程序部署到 liberty apps 目录,因为我没有使用 dropins 目录。
Bellow 是我可以部署到 dropins 目录的工作 maven 插件代码。
<plugin>
<groupId>net.wasdev.wlp.maven.plugins</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>start-server</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start-server</goal>
</goals>
<configuration>
<verifyTimeout>60</verifyTimeout>
</configuration>
</execution>
<execution>
<id>deploy</id>
<phase>install</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
<configuration>
<serverHome>$wlp.dir</serverHome>
<serverName>$server</serverName>
<appArtifact>
<groupId>$project.groupId</groupId>
<artifactId>$project.artifactId</artifactId>
<version>$project.version</version>
<type>$project.packaging</type>
</appArtifact>
<appDeployName>$project.artifactId.$project.packaging</appDeployName>
</configuration>
</plugin>
我在任何地方都找不到需要添加/更改哪些配置才能将应用程序直接部署到应用程序目录。有人可以让我知道这里缺少什么吗?
【问题讨论】:
基于 github repo doc (github.com/WASdev/ci.maven/blob/master/docs/deploy.md#deploy) 听起来只能部署到dropins
。为什么需要部署到apps
目录而不是dropins
?共享库什么的?
是的。我不能共享库,这会导致我的应用程序出现一些问题。因此我别无选择,只能使用应用程序目录
您可以将共享库应用到“dropin 应用程序”,方法是将 jar 放在以下位置:$shared.config.dir/lib/global
或 $server.config.dir/lib/global
。请参阅此文档:ibm.com/support/knowledgecenter/SSAW57_8.5.5/…
我一直在使用 $shared.config.dir/lib/global,直到遇到错误 oracle/sql/ArrayDescriptor。它是由 ojdbc6.jar 引起的。一旦我将应用程序放入应用程序文件夹并在 server.xml 中手动将 libs 目录配置分配给应用程序并在 server.xml 中使用相同的 libs 目录配置来创建数据源,问题就解决了。
【参考方案1】:
添加 install-apps 执行步骤而不是 deploy(部署执行步骤只会将应用程序部署到 dropins 文件夹)步骤将解决问题。 版本必须更新到 1.3,这是目前最新的
参考:https://github.com/WASdev/ci.maven/blob/master/docs/install-apps.md
完整的maven插件代码如下
<plugin>
<groupId>net.wasdev.wlp.maven.plugins</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>start-server</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start-server</goal>
</goals>
<configuration>
<verifyTimeout>60</verifyTimeout>
</configuration>
</execution>
<execution>
<id>install-apps</id>
<phase>pre-integration-test</phase>
<goals>
<goal>install-apps</goal>
</goals>
<configuration>
<appsDirectory>apps</appsDirectory>
<installAppPackages>project</installAppPackages>
</configuration>
</execution>
</executions>
<configuration>
<serverHome>$wlp.dir</serverHome>
<serverName>$server</serverName>
<appArtifact>
<groupId>$project.groupId</groupId>
<artifactId>$project.artifactId</artifactId>
<version>$project.version</version>
<type>$project.packaging</type>
</appArtifact>
<appDeployName>$project.artifactId.$project.packaging</appDeployName>
</configuration>
</plugin>
【讨论】:
【参考方案2】:您也可以尝试该插件的当前 2.0-SNAPSHOT 版本。只需包含父 pom 和插件的一些配置。 2.0 版将于 6 月初发布。
如果您不想包含父 pom,您可以从包含 liberty-maven-plugin 目标绑定到 Maven 默认构建生命周期的父 pom 中复制 <pluginManagement/>
部分。见https://github.com/WASdev/ci.maven/blob/master/docs/parent-pom.md
<parent>
<groupId>net.wasdev.wlp.maven.parent</groupId>
<artifactId>liberty-maven-app-parent</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots/
</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots/
</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
...
<build>
<finalName>$project.artifactId</finalName>
<plugins>
...
<plugin>
<groupId>net.wasdev.wlp.maven.plugins</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<version>2.0-SNAPSHOT</version>
<configuration>
<assemblyArtifact>
<groupId>com.ibm.websphere.appserver.runtime</groupId>
<artifactId>wlp-webProfile7</artifactId>
<version>17.0.0.1</version>
<type>zip</type>
</assemblyArtifact>
<serverName>$project.artifactIdServer</serverName>
<configFile>src/main/liberty/config/server.xml</configFile>
</configuration>
</plugin>
</plugins>
...
</build>
【讨论】:
以上是关于如何从 WebSphere Liberty Maven 插件部署到 WebSphere Liberty 应用程序目录?的主要内容,如果未能解决你的问题,请参考以下文章
如何启动在 Websphere Liberty Core 中自动部署的 Worklight 服务器
OpenLiberty - IBM首次公开WebSphere Liberty开源版本!
websphere liberty - SLF4J jars 与 websphere 内部包冲突