如何为不同的平台创建 Maven 工件,即需要系统库
How to create maven artifact for different platforms, i.e. needs system libraries
我有一个 JAR 文件,我想将其作为工件添加到我的 Maven 2 存储库中。 JAR 依赖于每个平台特定的系统库,例如.dll 在 Windows、.so 在 Linux 等
我应该如何创建工件以便来自不同平台的用户可以使用 JAR?
如果您的 JAR 是一个 library
,您希望将其包含到其他项目中,那么您可以创建可以基于系统激活的 maven 配置文件,并且在那里添加任何所需的系统依赖项。
<profiles>
<profile>
<activation>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>
...
</profile>
</profiles>
但是,如果您正在制作 executable
JAR,那就完全不同了。
有很多方法可以做到这一点,但并非所有方法都很容易。如果你知道你在寻找什么(DLL
或 SO
库的名称),那么你可以制作一个启动脚本来:
- 尝试在 class 路径中找到一个
- 尝试在系统路径中找到一个
- 尝试在 "default" / "most expected" 个位置找到一个
- 搜索具有文件位置
的.config
文件
- 要求用户输入文件路径
有些应用会执行所有这些步骤,有些会执行几个或仅执行一个。我也想知道有没有更好的方法:)
我有一个 JAR 文件,我想将其作为工件添加到我的 Maven 2 存储库中。 JAR 依赖于每个平台特定的系统库,例如.dll 在 Windows、.so 在 Linux 等
我应该如何创建工件以便来自不同平台的用户可以使用 JAR?
如果您的 JAR 是一个 library
,您希望将其包含到其他项目中,那么您可以创建可以基于系统激活的 maven 配置文件,并且在那里添加任何所需的系统依赖项。
<profiles>
<profile>
<activation>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>
...
</profile>
</profiles>
但是,如果您正在制作 executable
JAR,那就完全不同了。
有很多方法可以做到这一点,但并非所有方法都很容易。如果你知道你在寻找什么(DLL
或 SO
库的名称),那么你可以制作一个启动脚本来:
- 尝试在 class 路径中找到一个
- 尝试在系统路径中找到一个
- 尝试在 "default" / "most expected" 个位置找到一个
- 搜索具有文件位置 的
- 要求用户输入文件路径
.config
文件
有些应用会执行所有这些步骤,有些会执行几个或仅执行一个。我也想知道有没有更好的方法:)