Как включить сторонние библиотеки в сборку openLiberty maven

В настоящее время я запускаю PoC с открытой Liberty, и у меня небольшие проблемы с библиотеками.

Короче говоря, в нашем проекте есть несколько сторонних 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?


person MichaelJones    schedule 12.07.2018    source источник


Ответы (1)


Прежде всего, я рекомендую самый простой подход, заключающийся в упаковке библиотек внутри вашего приложения (таким образом не требуется конфигурация server.xml <library>). Если вы используете maven-war-plugin, то любые не-provided зависимости автоматически попадут в WEB-INF/lib/ вашего приложения. Однако, если на вашем сервере Liberty установлено более 1 приложения, которым нужны одни и те же библиотеки, это может оказаться не лучшим решением.


Что касается вашего первоначального вопроса, вы можете использовать maven-dependency-plugin для копирования любого артефакта maven в определенное место во время сборки. При использовании этого плагина для настройки <library> обязательно привяжите шаг копирования к фазе prepare-package.

Вот пример добавления JUnit в ${server.config.dir}/myLib/ во время сборки Maven:

<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>
person Andy Guibert    schedule 12.07.2018