gpt4 book ai didi

Ivy 在文件系统中找不到我的工件

转载 作者:行者123 更新时间:2023-12-04 23:28:27 30 4
gpt4 key购买 nike

我的本地文件系统中有一个工件,但 Ivy 无法解析它,除非我将 解析器放在 中。并在解决工件扩展名时重命名它。

这是我的 ivy.xml:

<ivy-module version="2.0">
<info organisation="apache" module="hello-ivy"/>
<dependencies>
<dependency org="myorg" name="mymodule" rev="1.1-SNAPSHOT"/>
</dependencies>
</ivy-module>

这是我的 ivysettings.xml:
<ivysettings>
<settings />

<resolvers>
<filesystem name="local">
<artifact pattern="/path/to/my/artifact/[module]/dist/[module]-[revision].zip" />
</filesystem>
</resolvers>
</ivysettings>

我的 build.xml:
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="hello-ivy" default="deps">

<target name="deps" description="--> retrieve dependencies with ivy">
<ivy:settings file="ivysettings.xml"/>
<ivy:resolve />
<ivy:retrieve />
</target>
</project>

该工件是一个 .zip 文件。它在正确的位置并正确命名(根据 的模式属性。但是当我运行 ant 时,它无法解析工件:
[ivy:resolve] :::: WARNINGS
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: UNRESOLVED DEPENDENCIES ::
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: myorg#mymodule;1.1-SNAPSHOT: no resolver found for myorg#mymodule: check your configuration
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :::: ERRORS
[ivy:resolve] unknown resolver null
[ivy:resolve] no resolver found for myorg#mymodule: check your configuration

为什么找不到我的模块?

然后:如果我将 元素放在 元素中,它会解析:
[ivy:resolve]   found myorg#mymodule;1.1-SNAPSHOT in local
[ivy:resolve] downloading /path/to/my/artifact/mymodule/dist/mymodule-1.1-SNAPSHOT.zip
[ivy:resolve] ..................(lots of dots here).....(37899kB)
[ivy:resolve] [SUCCESSFUL ] myorg#mymodule;1.1-SNAPSHOT!mymodule.jar (430ms)

所以这很奇怪。为什么 会有所作为?
顺便说一句,为什么我的模块现在是 JAR ???来源是一个 ZIP 文件,我发誓。这也是正确的——我刚刚重建了 ZIP,最新的更改在我的 JAR 文件中。为什么 Ivy 重新命名它?

最佳答案

默认 type of an artifact in ivy is jar and the default extension is jar, too.
这将导致重命名。

您必须像这样定义您的依赖项(明确定义工件):

<dependency org="myorg" name="mymodule" rev="1.1-SNAPSHOT">
<artifact name="mymodule" type="zip" conf="A,B"/>
</dependency>

但是您必须正确定义文件系统解析器:
  <filesystem name="local">
<artifact pattern="/path/to/my/artifact/[module]/dist/[module]-[revision].[ext]" />
</filesystem>

最好的方法是为您的特殊依赖项定义一个适当的 ivy.xml,它清楚地定义了哪些工件可用。并将其放在您的 dist 文件夹中。

看:
  • https://ant.apache.org/ivy/history/latest-milestone/ivyfile/publications.html
  • https://ant.apache.org/ivy/history/latest-milestone/ivyfile/artifact.html

  • 使用 ant -v 运行 ant 通常是个好主意。调试 Ivy 时。这将提供很好的附加信息。

    关于 Ivy 在文件系统中找不到我的工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8706708/

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