在 Mac 上的 mvn 构建期间,Java 测试中的环境变量为空

问题描述

我有不同的 Java 测试行为(可能是在 MacOS 更新到 Big Sur 11.2.3 或其他系统之后)。

我的 JUnit 测试需要 Mac 上的变量 DYLD_LIBRARY_PATH 和 Ubuntu 上的 LD_LIBRARY_PATH(使用 mvn surefire,见下文)来查找一些 dylibs/共享对象。

测试在 IntelliJ 中工作,在两个操作系统上都没有任何问题。 但是在 mvn 构建期间,DYLD_LIBRARY_PATH 变量 (System.getenv(..)) 为空,并且在 Mac 上测试失败(在 Ubuntu 上它可以工作)。以“-X”开头的 mvn 表明 surefire 设置了 DYLD_LIBRARY_PATH,但后来它仍然为空。

我使用的是 maven-3.6.3、surefire 3.0.0-M5 和 OpenJDK 11.0.10。

任何想法,我如何处理环境问题?

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <environmentvariables>
            <LD_LIBRARY_PATH>${basedir}/src/main/resources/libs</LD_LIBRARY_PATH>
            <DYLD_LIBRARY_PATH>${basedir}/src/main/resources/libs</DYLD_LIBRARY_PATH>
        </environmentvariables>
    </configuration>
</plugin>

解决方法

请在我们的 JIRA 中报告错误并将您的项目附在 ZIP 中。我们需要复现并调试插件,但项目是必需的。