我正在尝试将 Ivy 配置为与 Artifactory(一个流行的存储库管理器)很好地配合使用,并且需要确认我正在朝着正确的道路前进。
我假设一旦我在我的存储库服务器上正确配置了 Artifactory,我可以将 Ivy 指向下面的某个目录ARTIFACTORY_HOME
并传递给它与普通 URL 解析器相同的信息。通过这种方式,Artifactory 获得了信息(要处理的命令、用户名和密码等)并代表实际的存储库接管。(因此,如果凭据错误或用户无权兑现请求,Artifactory 会发回 404/等。)
因此,首先,如果这是错误的,请纠正我!
所以这就是我的想法。在我的项目的 Ant 构建中:
<ivy:settings url="http://my-repo-server.com/ivy/settings/ivy-settings.xml"/>
<target name="ivy-resolve">
<ivy:configure host="http://my-repo-server.com/ivy"
realm="ivy"
username="developer" <!-- "developer" is read-only user configured in Artifactory -->
passwd="38ur84u83j38y83u" <!-- encrypted password provided by Artifactory -->
override="false"/>
<ivy:resolve file="ivy.xml" conf="compile"/>
</target>
然后,在(服务器端)ivy-settings.xml
:
<resolvers>
<url name="repo-server">
<ivy pattern="http://my-repo-server.com/ivy/???"/>
<artifact pattern="http://my-repo-server.com/ivy/???"/>
</url>
</resolvers>
因此,当开发人员的 Ant 构建运行ivy-resolve
目标时,Ivy 客户端知道去哪里找到ivy-settings.xml
文件,并使用developer
我在 Artifactory 中设置的用户和加密密码来配置自己。
唯一的问题是,我不确定在设置文件中为 Ivy & Artifact 模式指定什么?我假设我必须将它们设置为由 Artifactory 控制的某个目录,但我不确定是什么(在 Artifactory 中,我的仓库使用默认的 Ivy 仓库布局)。
另外,我是否像我一样将设置文件放在 repo 服务器上,违反了 Artifactory 的“最佳实践”?我应该把它放在一些 Artifactory 管理的(隐藏)目录中吗?如果是这样,在哪里以及为什么?
最终,代码示例帮助我学习最快和最简单(我是一个图形学习者),因此非常感谢任何朝着正确方向的编程推动!
提前致谢!