【发布时间】:2012-04-28 23:28:00
【问题描述】:
我多年来一直在寻找解决问题的方法,但我遇到的所有其他帖子要么不起作用,要么不符合我的情况,所以希望有人能给我一些见解.
我有一个使用 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>
为了响应下面的 cmets,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。
【问题讨论】:
-
对于上面的 ivy 文件,我指定在我的 ant 属性文件中运行哪个配置,或者在 Eclipse 中使用 IvyDE(在我的情况下,它是我正在运行的 PDA 配置)
-
@DaveJohnston 我没看错吗?你不使用ivy的发布任务,而是手动将jar和上面的ivy.xml复制到repo?如果是这种情况,您的 ivy.xml 缺少发布标记,则需要检索。
-
上面的ivy.xml文件并没有复制到repo,它是repo中依赖于库的项目的ivy文件。该 ivy 文件中没有发布标签,因为只有一个输出,即与模块同名的 jar 文件。
-
你能从 repo 中获取/发布实际的 ivy.xml 吗?
-
repo中没有ivy.xml文件,是maven repo,所以有pom文件。
标签: java maven ivy nexus ivyde