如果使用的JVM是x86或x64,则以不同方式解析Maven依赖关系?

我有一个Maven存储库设置为托管一些dll,但我需要我的Maven项目下载不同的dll,具体取决于使用的JVM是x86还是x64。

因此,例如,在运行x86版本的JVM的计算机上,我需要将ABC.dll作为依赖项从存储库下载,但在运行x64版本的JVM的另一台计算机上,我需要它下载XYZ.dll。

我该怎么做呢? 一个示例pom.xml文件会很好。

这适用于任何VM。 您可以根据环境使用配置文件进行备用配置。

配置文件包含一个激活块,它描述了何时激活配置文件,然后是通常的pom元素,例如依赖项:

    x86            x64        

正如您提到的DLL,我假设这只是Windows,因此您可能还想在标记下添加Windows

编辑:在64位操作系统上混合使用32位虚拟机时,您可以通过运行maven目标来查看虚拟机为os.arch系统属性提供的值

mvn help:evaluate

然后进入

${os.arch}

或者,目标help:system列出所有系统属性(没有特定的顺序。)

您可以使用profiles执行此操作。这只适用于Sun的JVM。

   32bits   sun.arch.data.model 32    ...    64bit   sun.arch.data.model 64    ...    

Maven个人资料可能对您有所帮助。