我一直在寻找解决问题的方法,但我遇到的所有其他帖子要么不起作用,要么不符合我的情况,所以希望有人能给我一些见解。
我有一个用 ant 构建的库,它输出 2 个 jar 文件,一个正常包含库的编译版本,另一个只包含源文件。
这个库被上传到我们的 Nexus 存储库,打包设置为 jar。对于实际的 jar 文件,我将扩展名设置为 jar 并将分类器留空。对于源 jar,我将分类器设置为源,并将扩展名设置为 jar。
无论我用 ivy.xml 文件做什么,我都无法下载源 jar。根据我在其他地方阅读的帖子,我尝试添加:
conf="*->default,sources"
我的依赖,但后来我得到一个错误:
configuration not found in org#name;version: 'sources'
所以这基本上是期望我的库将源定义为某处的配置?我认为它只会发现一个事实,即分类器设置为存储库中的源的另一个人工制品。
任何人都可以就我将库发布到 Nexus 的方式或我在 Ivy 文件中设置依赖项声明的方式给我可能做错的其他建议。
这是基本的 Ivy.xml 文件,我在其中定义了我对放在 Nexus 中的库的依赖关系。
<ivy-module version="2.0">
<info organisation="${ivy.organisation}" module="moduleName" />
<configurations>
<conf name="pda" description="moduleName for PDA"/>
<conf name="server" description="moduleName for server"/>
</configurations>
<dependencies>
<!-- Internal -->
<dependency name="utility" org="${ivy.organisation}" rev="latest.integration" conf="${ivy.configuration}"/>
<dependency name="myLib" org="my.org" rev="0.0.+"/>
</dependencies>
</ivy-module>
作为对以下评论的回应,ivy.configuration 属性在我的 Ant 的 build.properties 中设置为 pda。对于 Eclipse,我创建了一个属性文件并将 ivy.configuration 设置为 pda(然后在 Eclipse 中的 Ivy 设置中引用此属性文件)。
我得到的错误信息是:
Some projects fail to be resolved
Impossible to resolve dependencies of ${ivy.organisation}#moduleName;working@host
unresolved dependency: my.org#myLib;0.0.+: configuration not found in my.org#myLib;0.0.0: 'sources'. It was required from ${ivy.organisation}#moduleName;working@host pda
更新 这是已解决的 ivy.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0">
<info organisation="my.org"
module="myLib"
revision="0.0.0"
status="release"
publication="20120419131909"
default="true"
/>
<configurations>
<conf name="default" visibility="public"/>
</configurations>
<publications>
<artifact name="myLib" type="jar" ext="jar" conf="default"/>
</publications>
</ivy-module>
这显然解释了为什么它无法找到“来源”conf。但我的印象是应该自动添加源 conf,因为我已将源添加到 Nexus。