我正在使用maven来定义我的项目。我的一个依赖项需要在运行时使用本机DLL,因此在测试和调试时需要它。本机DLL在已知位置可用。我想要一个我可以签入一次的解决方案,并且适用于所有开发人员,而无需每个开发人员进行手动设置。
我知道我可以在“运行配置”中手动设置java.libary.path,这将允许它找到本机DLL,但这需要为每个开发人员手动设置。
我知道我也可以为给定的项目依赖项设置java.library.path,但这对于特定的开发人员来说也是本地的。
最后我知道我可以设置surefire插件来指定java.library.path,但这只适用于通过maven触发的测试 - 所以它对我们的构建服务器很有用,但不能帮助devs使用JUnit runner在eclipse中,或者想直接从eclipse调试或运行代码。
有出路吗?
答案 0 :(得分:5)
我发现与maven-nativedependencies-plugin一起使用的eclipse m2e连接器似乎解决了这个问题。
根据mavennatives文档:
如果你有maven-nativedependencies-plugin的0.0.7版本 已安装m2eclipse并配置了nativedependencies插件 解压缩本机会自动运行,你不需要 eclipse插件解压缩它们。但是为了设置 你将不得不在eclipse中使用java.library.path环境变量 它可以手动或自动使用eclipse插件。
这个Eclipse插件是m2eclipse的扩展,它会检测你是否 配置了maven插件,如果你这样做,就执行 解包本机,并配置本机库位置。
如果您导入具有mavennatives插件的maven项目 在导入时配置了m2eclipse集成插件 当执行清理时,也会提取本机 eclipse本机将被提取。
因此,如果您同时使用这两种工具,则使用本机依赖项则不需要 手动配置,除了在pom中的什么,只需运行您的应用程序 它有效。
如果我安装了连接器,并将mavennatives添加到我的POM,然后重新加载pom(右键单击package explorer> maven>更新项目中的项目),则填充项目的“本机库位置”自动(看到这个,右键单击项目>属性> java构建路径>库>本机库位置)
这似乎适用于调试,JUnit运行程序等。
它确实要求每个开发人员都安装插件,这是手动的(如安装eclipse手册);但是,至少一次安装它将适用于通过POM为mavennative配置的任何/所有本机depdendencies。
答案 1 :(得分:2)
Properties Maven Plugin可以帮助您使用properties:set-system-properties设置系统属性来传递系统属性。
示例应如下所示: -
<properties>
<java.library.path>some/path</java.library.path>
</properties>
我希望这可能有所帮助。