2

我目前正在运行一个带有开放式 Liberty 的 PoC,但我在使用库时遇到了一些麻烦。

简而言之,我们的项目有一些需要作为库包含的第三方 jar,但是当我mvn install在我的 Open Liberty 项目中运行时,我不知道如何包含它们。

我正在尝试在 server.xml 中配置它们,如下所示:

    <library id="MyLib" name="My Libraries">
        <fileset dir="${server.config.dir}/myLib/" includes="*.jar" id="myLib"/>
    </library>

我曾希望它们会被 maven 构建所接受,但显然不是。

我需要采取哪些步骤来确保我的库 jar 在运行时放置在正确的位置mvn install

4

1 回答 1

4

首先,我将推荐最简单的方法,即将库打包到应用程序中(<library>这种方式不需要 server.xml 配置)。如果您使用的是maven-war-plugin,那么任何非provided依赖项都将自动出现在WEB-INF/lib/您的应用程序中。但是,如果您的 Liberty 服务器中有多个应用程序需要相同的库,那么这可能不是一个好的解决方案。


关于您最初的问题,您可以maven-dependency-plugin在构建期间使用 将任何 Maven 工件复制到特定位置。使用此插件设置 a<library>时,请务必将复制步骤绑定到prepare-package阶段。

${server.config.dir}/myLib/这是在 Maven 构建期间添加 JUnit 的示例:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.1.1</version>
        <executions>
          <execution>
            <id>copy</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>3.8.1</version>
              <type>jar</type>
              <overWrite>false</overWrite>
              <outputDirectory>${project.build.directory}/liberty/wlp/usr/servers/myServer/myLib</outputDirectory>
              <destFileName>junit.jar</destFileName>
            </artifactItem>
          </artifactItems>
          <overWriteReleases>false</overWriteReleases>
          <overWriteSnapshots>true</overWriteSnapshots>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>
于 2018-07-12T18:52:47.380 回答