Java 如果使用的JVM是x86或x64,则以不同方式解决Maven依赖关系?
我已经设置了一个Maven存储库来托管一些DLL,但是我需要我的Maven项目下载不同的DLL,这取决于使用的JVM是x86还是x64 例如,在运行x86版本JVM的计算机上,我需要从存储库下载ABC.dll作为依赖项,但在另一台运行x64版本JVM的计算机上,我需要它下载XYZ.dllJava 如果使用的JVM是x86或x64,则以不同方式解决Maven依赖关系?,java,maven-2,jvm,dependencies,pom.xml,Java,Maven 2,Jvm,Dependencies,Pom.xml,我已经设置了一个Maven存储库来托管一些DLL,但是我需要我的Maven项目下载不同的DLL,这取决于使用的JVM是x86还是x64 例如,在运行x86版本JVM的计算机上,我需要从存储库下载ABC.dll作为依赖项,但在另一台运行x64版本JVM的计算机上,我需要它下载XYZ.dll 我该怎么做呢?一个示例pom.xml文件就很好了。您可以通过配置文件来实现这一点。这只适用于Sun的JVM <profiles> <profile> <id
我该怎么做呢?一个示例pom.xml文件就很好了。您可以通过配置文件来实现这一点。这只适用于Sun的JVM
<profiles>
<profile>
<id>32bits</id>
<activation>
<property>
<name>sun.arch.data.model</name>
<value>32</value>
</property>
</activation>
<dependencies>
...
</dependencies>
</profile>
<profile>
<id>64bit</id>
<activation>
<property>
<name>sun.arch.data.model</name>
<value>64</value>
</property>
</activation>
<dependencies>
...
</dependencies>
</profile>
</profiles>
32位
sun.arch.data.model
32
...
64位
sun.arch.data.model
64
...
可能会对您有所帮助。这将适用于任何虚拟机。您可以根据环境使用其他配置
概要文件包含一个激活块,该激活块描述何时激活概要文件,后跟常用的pom元素,例如依赖项:
<profiles>
<profile>
<activation>
<os>
<arch>x86</arch>
</os>
</activation>
<dependencies>
<dependency>
<!-- your 32-bit dependencies here -->
</dependency>
</dependencies>
</profile>
<profile>
<activation>
<os>
<arch>x64</arch>
</os>
</activation>
<dependencies>
<!-- your 64-bit dependencies here -->
</dependencies>
</profile>
</profiles>
x86
x64
正如您提到的DLL,我假设这只是Windows,因此您可能还希望在
标记下添加Windows
编辑:当在64位操作系统上混合32位虚拟机时,您可以通过运行maven目标来查看虚拟机给OS.arch
系统属性带来的价值
mvn帮助:评估
然后进入
${os.arch}
或者,目标
help:system
列出所有系统属性(没有特定顺序)。注意,此方法假设您在64位系统上使用64位JVM,但这并不总是正确的。大多数情况下,人们在他们的系统上使用32位JVM,不管是不是32位。这不是真的。即使在x64上,32位虚拟机也会返回架构的x86。(如果没有,那么它将失败,因为尝试在32位虚拟机下加载64位dll将失败。)我运行64位操作系统,但通常使用32位虚拟机。请参阅我的编辑,了解使用64位平台的maven.amd64检查此系统属性的简便方法。如何从java访问这些DLL?