使用 Ivy 解决多工件问题
Multiple-artifact resolution with Ivy
我需要通过 Ivy 解析一个 jcuda 本机库,但我在找到定义依赖项的正确方法时遇到了一些麻烦。
我使用 Artifactory 进行依赖管理,它正确识别并解析了所有可用平台的各个本机库版本(参见屏幕截图):
但是,我卡在
的分辨率上
Ivy 产生的错误显示了正确的解析路径。
我在这些库的原始 Maven 定义中找到了一个提示(在我的本地 Ivy 缓存中找到,%HOME%\.ivy2\cache\org.jcuda\jcuda-natives\windows-x86_64\ivy-0.8.0.xml.original
),它使用了以下分类器:
<classifier>${jcuda.os}-${jcuda.arch}</classifier>
在我的 Ivy 配置中,我不区分 OS 和体系结构,但是使用链式分类器给了我 windows-x86_64
,这是我正在寻找的 jar 文件。
我需要将 Maven 命名空间 (xmlns:maven="http://maven.apache.org"
) 添加到 ivy.xml
:
<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd" xmlns:maven="http://maven.apache.org">
然后下面的依赖可以使用maven:classifier来解析我要找的具体原生库:
<dependency org="org.jcuda" name="jcuda-natives" rev="0.8.0">
<artifact maven:classifier="windows-x86_64" ext="jar" />
</dependency>
我需要通过 Ivy 解析一个 jcuda 本机库,但我在找到定义依赖项的正确方法时遇到了一些麻烦。
我使用 Artifactory 进行依赖管理,它正确识别并解析了所有可用平台的各个本机库版本(参见屏幕截图):
但是,我卡在
的分辨率上Ivy 产生的错误显示了正确的解析路径。
我在这些库的原始 Maven 定义中找到了一个提示(在我的本地 Ivy 缓存中找到,%HOME%\.ivy2\cache\org.jcuda\jcuda-natives\windows-x86_64\ivy-0.8.0.xml.original
),它使用了以下分类器:
<classifier>${jcuda.os}-${jcuda.arch}</classifier>
在我的 Ivy 配置中,我不区分 OS 和体系结构,但是使用链式分类器给了我 windows-x86_64
,这是我正在寻找的 jar 文件。
我需要将 Maven 命名空间 (xmlns:maven="http://maven.apache.org"
) 添加到 ivy.xml
:
<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd" xmlns:maven="http://maven.apache.org">
然后下面的依赖可以使用maven:classifier来解析我要找的具体原生库:
<dependency org="org.jcuda" name="jcuda-natives" rev="0.8.0">
<artifact maven:classifier="windows-x86_64" ext="jar" />
</dependency>