6

我正在使用 Maven 来定义我的项目。我的依赖项之一在运行时需要本机 DLL,因此在测试和调试中需要它。本机 DLL 在已知位置可用。我想要一个解决方案,我可以签入一次,并且无需每个开发人员手动设置即可为所有开发人员工作。

我知道我可以在“运行配置”中手动设置 java.libary.path,这将允许它找到本机 DLL,但这需要每个开发人员手动设置。

我知道我也可以为给定的项目依赖项设置 java.library.path,但这对于特定的开发人员来说也是本地的。

最后我知道我可以设置surefire插件来指定java.library.path,但这仅对通过maven触发的测试有用 - 所以它对我们的构建服务器非常有用,但不能帮助开发人员在eclipse中使用JUnit runner,或者想直接从 Eclipse 调试或运行代码。

有出路吗?

4

2 回答 2

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(右键单击包资源管理器中的项目> maven > 更新项目),项目的“本机库位置”将自动填充(查看此,右键单击项目>属性> java构建路径>库>本机库位置)

在此处输入图像描述

这似乎适用于调试、JUnit 运行器等。

它确实要求每个开发人员都安装插件,这是手动的(就像安装 eclipse 一样手动);但是,至少一旦安装一次,它将适用于通过 POM 为 mavennatives 配置的任何/所有本机依赖项。

于 2013-03-07T15:59:21.863 回答
2

Properties Maven 插件可以帮助您通过使用properties:set-system-properties来设置系统属性来传递系统属性。

该示例应如下所示: -

<properties>
    <java.library.path>some/path</java.library.path>
</properties>

我希望这可能会有所帮助。

于 2013-03-07T12:41:57.073 回答