微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 WebSphere Liberty/Open Liberty Maven WAR 项目构建可运行的 JAR?

如何解决如何从 WebSphere Liberty/Open Liberty Maven WAR 项目构建可运行的 JAR?

我想使用 Open Liberty 从我的 Maven WAR 项目构建一个可运行/可执行的 JAR(与 java -jar my.jar 一起运行)。

如果我运行 mvn package,我会得到一个 WAR,但是如果我然后运行 ​​mvn liberty:package,我会得到类似的结果:

[INFO] CWWKM2001I: Invoke command is ["C:\git\lmparch1\test\target\liberty\wlp\bin\server.bat",package,defaultServer,--archive="C:\git\lmparch1\test\target\test.jar",--include=runnable].
[INFO] CWWKE0005E: The runtime environment Could not be launched.
[INFO] CWWKE0031E: Specified defaultServer server does not exist; use the create action to create a new server. serverPath: C:\git\lmparch1\test\target\liberty\wlp\usr\servers\defaultServer
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  20.531 s
[INFO] Finished at: 2021-04-09T15:32:01-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.openliberty.tools:liberty-maven-plugin:3.3.4:package (default-cli) on project test: CWWKM2002E: Failed to invoke ["C:\git\lmparch1\test\target\liberty\wlp\bin\server.bat",--include=runnable]. RC= 2 but expected=[0]. -> [Help 1]

我应该配置哪些目标并将其绑定到哪些阶段等?

解决方法

答案取决于您是否使用 liberty-maven-app-parent 来设置您的生命周期(或类似地将目标绑定到您自己的阶段)。

使用 Liberty Maven 应用父级(或类似应用)

首先,如果您使用的是 io.openliberty.tools:liberty-maven-app-parent,例如从使用 liberty-archetype-webapp_ 生成,然后您只需将其用作您的自由行家插件配置:

    <plugin>
        <groupId>io.openliberty.tools</groupId>
        <artifactId>liberty-maven-plugin</artifactId>
        <version>3.3.4</version>
        <configuration>
            <include>minify,runnable</include>

然后做mvn package

您将看到创建的可运行 JAR 类似于:target/xyz.jar

交互使用通用 WAR 项目

最简单的方法是让开发模式安装 Liberty 并打包和部署 WAR,然后 Ctrl+C 取消它以打包可运行的 JAR。

  1. 运行 mvn liberty:dev 以启动 "dev mode" 并等待服务器安装和应用部署
  2. 在开发模式完成启动时键入 <Ctrl+C>(当您看到 Liberty 在开发模式下运行或看到应用启动时CWWKT0016I应用可用消息).
  3. 运行 mvn liberty:package -Dinclude=minify,runnable 以生成可运行的 JAR(类似于:target/xyz.jar)。

在 CI 环境中使用通用 WAR 项目(例如构建管道)

如果您以非交互方式运行,并且发出 Ctrl+C 并不容易,您可以这样做

mvn package liberty:create liberty:install-feature liberty:deploy liberty:package -Dinclude=minify,runnable

我们已打开 issue 以考虑改进此用例。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。