我有本地文件系统Ivy存储库,需要将所有工件安装(发布)到远程Maven存储库,如Nexus或Artifactory。我按照以下几行编写了ivy install task的蚂蚁脚本:
<ivy:install
organisation="apache"
module="commons-lang"
revision="2.0"
from="ivyfilesys" to="remotemaven"/>
现在,我的本地ivy存储库(test
,compile
)中有多个配置,这些配置在ivy.xml文件中声明。本地存储库包含每个工件,jar和ivys的两个文件夹。 Jars文件夹包含jar,ivys文件夹包含ivy.xml,其中包含声明的配置。还有SHA和MD5校验和文件,但没有别的。
我预计Ivy会告诉Maven存储库有关可用的配置,但似乎没有。在我切换到新创建的存储库以进行解析之后,Ivy无法找到它刚刚安装在那里的工件,声称缺少test
和compile
配置。
本地存储库配置为基于文件,并且可以从没有问题解决工件。远程存储库是ibiblio,m2兼容:
<ibiblio name="remotemaven" m2compatible="true"
root="http://my.server:8081/"
pattern="[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
/>
Root已配置到我们的服务器。当安装的工件出现在服务器上时,可能正确配置了根和身份验证。
是否可以让Ivy尊重自己的ivy.xml并使用配置安装到Nexus或Artifactory存储库中,以便以后解决它们?
答案 0 :(得分:2)
可以从Maven存储库安装和检索配置吗?
简单的答案是否定的。
Maven不支持Ivy的配置概念。最接近的比较是Maven&#34;范围&#34;。这些是固定的,常春藤ibiblio resolver了解如何将这些映射到配置中。以下答案有更详细的说明:
将artefact发布到Maven存储库时,还必须生成Maven元数据文件:pom.xml。 makepom task允许您指定应该为特定Maven范围使用哪些常春藤配置。以下答案可能有用:
常春藤并不局限于固定数量的范围。虽然常春藤配置更加灵活,但您不能假设每个配置都用于填充标准项目类路径....
因此,总的来说,将本地常春藤仓库中的批量传输文件转移到Maven存储库并不是一项简单的工作,原因如下:
根据我的经验,最大的问题是大量的第三方罐子,没有记录他们来自哪里。为了帮助Maven化我的新项目,我开发了一个groovy脚本,它使用Nexus搜索API在Maven Central数据库中查找匹配的记录。一般而言,这种方法导致本地储存的罐子数量减少多达80%。
希望这有帮助。