我有一个 Maven 项目,它构建了一个部署到 Open Liberty 的战争。我正在使用 Liberty maven 插件:
<plugin>
<groupId>io.openliberty.tools</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<version>3.9</version>
<!-- Specify configuration, executions for liberty-maven-plugin -->
</plugin>
我正在利用开发模式并且它运行良好。但是,我想在 Dev 模式下使用本地 jar 文件库。
我期望我能够将 jar 文件放置在项目中的特定位置,并且 Liberty 开发模式会自动拾取它们 - 类似于自动拾取
server.xml
的方式src/main/liberty/config
。我的 server.xml
设置为在此处查找库:${shared.config.dir}/lib/global
,因此我尝试将罐子放入 src/main/liberty/shared/config/lib/global
中,但这不起作用。
我看到的另一种选择是使用 Libity 插件的
copyDependencies
配置。
有一些推荐的方法可以实现我想做的事情吗?理想情况下,我想要最简单的解决方案,既适用于 liberty dev 模式,也适用于 vanilla maven 构建 (
mvn package
)。
这里的类似问题利用了
copyDependencies
配置,但具体来说,我正在寻找本地 jar 的最佳解决方案(是的,我可以使用系统范围的 Maven 坐标或在本地安装 jar)
如何在 Maven 构建期间将外部依赖项复制到 Open Liberty
谢谢
好问题,稍微概括一下问题,您可能可以使用三种方法:
<build>
<resources>
<!-- Explicitly configure the default too -->
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
<!-- Custom library -->
<resource>
<directory>${project.basedir}/mylib</directory>
<targetPath>${project.build.directory}/liberty/wlp/usr/shared/lib/global</targetPath>
<!-- Default, but just emphasizing the point -->
<filtering>false</filtering>
</resource>
</resources>
由于开发模式在其“生命周期”中调用
resources:resources
目标,因此可以在没有任何插件配置的情况下进行配置(使用“/project/build/resources”(在 XPath 术语中)元素),并使用您的 <targetPath>
可以复制到任何位置。
除了
src/main/liberty/config/server.xml
处的主服务器XML配置文件之外,您还可以将其他文件和目录放在那里,所有文件和目录都将通过开发模式复制过来。
所以你可以创建,例如
src/main/liberty/config/mylib/my.jar
,它会被复制到target/liberty/wlp/usr/servers/defaultServer/mylib/my.jar
。然后,您可以从 server.xml
将此位置引用为相对于服务器配置目录的 "mylib/my.jar"
。
(这不太适合要求复制到“.../shared/lib/global”的原始用例,但可能适合其他查看此问题的人)。
这在原来的问题中已经提到过。我不太喜欢这个解决方案。为了完整起见,我会提及它,但请您自行查找详细信息。 这可能会很有趣。