Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 我可以用maven surefire插件设置DYLD_库_路径吗?_Macos_Maven - Fatal编程技术网

Macos 我可以用maven surefire插件设置DYLD_库_路径吗?

Macos 我可以用maven surefire插件设置DYLD_库_路径吗?,macos,maven,Macos,Maven,在Java项目中,我依赖于第三方本机库,该库通过DYLD\u library\u PATH加载依赖性dylib。我已经通过Tycho的surefire插件成功地运行了测试,方法是使用插件配置的environmentVariables属性进行设置,但是在非OSGi项目中类似的设置使DYLD\u LIBRARY\u PATH变量未设置 下面是我的Tycho功能配置的一个片段: <plugin> <groupId>org.eclipse.tycho</groupI

在Java项目中,我依赖于第三方本机库,该库通过
DYLD\u library\u PATH
加载依赖性dylib。我已经通过Tycho的surefire插件成功地运行了测试,方法是使用插件配置的
environmentVariables
属性进行设置,但是在非OSGi项目中类似的设置使
DYLD\u LIBRARY\u PATH
变量未设置

下面是我的Tycho功能配置的一个片段:

<plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-surefire-plugin</artifactId>
    <version>0.25.0</version>

    <configuration>
        <argLine>-Dfile.encoding=UTF-8 -Djava.library.path="${dylib-program}"</argLine>
        <environmentVariables>
            <DYLD_LIBRARY_PATH>${dylib-program}</DYLD_LIBRARY_PATH>
        </environmentVariables>
    </configuration>
</plugin>
但是,当我运行此命令时,依赖项库没有正确加载,并且
System.getenv(“DYLD\u library\u PATH”)
返回
null
<但是,code>System.getenv(“OtherVar”),返回
“bar”
,因此设置环境变量通常是可行的。这让我怀疑
DYLD\u LIBRARY\u PATH
(同样的情况也发生在
LD\u LIBRARY\u PATH
,但不是
PATH

在Eclipse中运行时(按原样运行或在运行配置环境中也设置了路径)和通过命令行运行时(也可以按原样运行或在运行前显式导出环境变量),行为相同。Tycho和非Tycho项目使用相同的工具(测试插件除外)在同一台机器上运行。我正在使用macOS 10.12.3、Java1.8.0_111和Maven 3.3.9


至少在Mac上设置此属性有一般限制吗?或者我有办法解决这个问题吗?

您是否尝试过使用-DDYLD_LIBRARY_PATH=myValue运行maven?好主意,但遗憾的是,这似乎没有效果。按照类似的思路,我还尝试通过
systemPropertyVariables
设置它,结果是相同的空值。因此,我在我的Linux上尝试了您的配置,它工作正常(使用LD_LIBRARY_PATH),所以可能我没有完全理解它。在pom中,我是否正确地假设您设置了
${dylib program}
变量的值?我假设您希望环境变量在测试阶段获得其值,这是正确的吗?在这两个方面都是正确的:我最初在local.m2/settings.xml中设置了dylib程序属性,然后在项目pom中进行测试,我确实希望它在测试期间作为环境变量存在。我和你在Linux上看到的一样:它可以正常工作。Tycho surefire插件不知何故回避了Mac上的一些特殊情况。我认为本文可以解释观察到的差异:“在Mac OS X上,强烈反对使用DYLD_LIBRARY_PATH,特别是因为OS X 10.11不再在子进程中导出此环境变量。”
<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <argLine>-Dfile.encoding=UTF-8 -Djava.library.path="${dylib-program}"</argLine>
        <environmentVariables>
            <DYLD_LIBRARY_PATH>${dylib-program}</DYLD_LIBRARY_PATH>
            <OtherVar>bar</OtherVar>
        </environmentVariables>
    </configuration>
</plugin>