【问题标题】:Travis CI not linking library for Maven Surefire PluginTravis CI 没有为 Maven Surefire 插件链接库
【发布时间】:2018-05-26 07:13:40
【问题描述】:

我正在尝试在 Travis CI 上构建一个依赖于 Z3 SMT Solver 的 maven 项目 (https://github.com/sdiemert/jgt)。

我需要指定 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 ignoring MAVEN_OPTS?

任何帮助。

【问题讨论】:

    标签: maven travis-ci z3 maven-surefire-plugin


    【解决方案1】:

    所以我似乎找到了解决方案,为将来遇到此问题的任何人发帖。

    Java 的 Z3 依赖于 libz3java.so(或 OSX 上的 dylib)。我正确指出了使用 Surefire 插件的 argLine 配置选项(从上面稍微修改):

        <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 环境)中。显而易见的解决方法是通过在调用mvn test 之前添加apt-get update install build-essential 来安装此库。

    另外,我还设置了LD_LIBRARY_PATH=&lt;path-to-z3-libs&gt;,这在 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-06
      • 2018-12-20
      • 2016-01-01
      • 1970-01-01
      • 2017-02-05
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多