gpt4 book ai didi

java - 如何让 Ivy 从 Nexus 仓库下载源代码

转载 作者:搜寻专家 更新时间:2023-10-31 20:14:46 27 4
gpt4 key购买 nike

我已经搜索了很长时间,试图找到解决我问题的方法,但我遇到的所有其他帖子要么不起作用,要么不符合我的情况,所以希望有人能给我一些见解.

我有一个用 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 应该自动添加,因为我已经将源添加到 Nexus。

最佳答案

当你发布 Artifact 时,你应该告诉 Ivy 有关配置的信息。例如:

<ivy-module version="2.0">
<info organisation="apache" module="commons-lang" revision="2.5" status="release"/>
<configurations>
<conf name="binary" description="provide only binary files"/>
<conf name="development" extends="binary" description="provide binary files with javadoc and sources"/>
</configurations>
<publications>
<artifact name="commons-lang" ext="jar" conf="binary" type="jar"/>
<artifact name="commons-lang-javadoc" ext="jar" conf="development" type="javadoc"/>
<artifact name="commons-lang-sources" ext="jar" conf="development" type="source"/>
</publications>
</ivy-module>

如您所见,commons-lang.jar 在二进制配置下发布。但是 commons-lang-sources 和 commons-lang-javadoc 在开发配置下发布。

当您检索依赖项时,您应该使用以下 ivy.xml:

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="bitrete" module="strongpoint" status="development"/>
<configurations>
<conf name="binary" description="provide only binary files"/>
<conf name="development" extends="binary" description="provide binary files with javadoc and sources"/>
</configurations>
<publications>
<artifact name="strongpoint" ext="jar" type="jar"/>
</publications>
<dependencies>
<dependency org="apache" name="commons-lang" rev="2.5"/>
</dependencies>
</ivy-module>

并在使用 Ant 解析时提供所需的配置:

<property name="ivy.conf" value="binary"/>
...
<property name="ivy.conf" value="development"/>
...
<ivy:resolve conf="${ivy.conf}"/>

关于java - 如何让 Ivy 从 Nexus 仓库下载源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10194367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com