Travis CI не связывает библиотеку для плагина Maven Surefire - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь построить проект maven (https://github.com/sdiemert/jgt) на Travis CI, который зависит от Z3 SMT Solver.

Мне нужно указать местоположение динамической библиотеки z3, используя:

-Djava.library.path=<path-to-directory-containing-lib>

Я использую плагин Maven surefire для выполнения тестов и указал конфигурацию как:

    <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.20.1</version>
        <configuration>
            <argLine>-Djava.library.path=./lib/</argLine>
        </configuration>
    </plugin>

Я могу выполнить тесты на моей локальной машине, используя: mvn test

Однако при выполнении тестов на Travis CI я получаю сбои сборки:

java.lang.UnsatisfiedLinkError: no libz3java in java.library.path`java.library.path

Вот недавний журнал сборки Travis CI:

https://travis -ci.org / sdiemert / jgt / builds / 384010136

Я немного растерялся из-за дальнейших действий. Самое близкое, что я мог найти на SO, это: Travis CI игнорирует MAVEN_OPTS? .

Оказана помощь.

1 Ответ

0 голосов
/ 27 мая 2018

Таким образом, я, кажется, нашел решение, публикуя сообщения для всех, кто столкнется с этим в будущем.

Z3 для Java зависит от libz3java.so (или dylib в OSX).Я правильно указал на использование параметра конфигурации argLine плагина Surefire (слегка измененный сверху):

    <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.20.1</version>
        <configuration>
            <argLine>-Djava.library.path=${project.basedir}/lib/</argLine>
        </configuration>
    </plugin>

ОДНАКО, двоичные файлы z3 полагаются на libgomp1, который не устанавливается по умолчанию в среде Travis CI(или среда Atlassian Bamboo для работы в этой экосистеме).Очевидным решением является установка этой библиотеки путем добавления apt-get update install build-essential до вызова mvn test.

Кроме того, для удобства я также установил LD_LIBRARY_PATH=<path-to-z3-libs>, который, по-видимому, необходим в Linux.

Получается travis.yml:

language: java

install:
    - sudo apt-get update
    - sudo apt-get install build-essential
    - scripts/install-dependencies.sh
    - mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V

script:
    - export LD_LIBRARY_PATH="$TRAVIS_BUILD_DIR/lib/"
    - mvn test -B
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...