将Maven与Ivy集成

问题是:您在Ivy存储库中(只有那里)有一些资源,您想在基于Maven的项目中使用这些资源。 可能的解决方案:
  • 由于Ivy可以轻松使用Maven风格的存储库(因此,您的Ivy客户端可以继续使用Ivy并进行一些微小的配置更改,因此将存储库迁移到Maven(例如Nexus),Maven客户端也可以工作-推送请求流程也需要待更改)
  • 尝试使用JFrog Artifactory,因为据报道可以为Ivy和Maven提供相同的资源 (免责声明:我尚未尝试实际使用它,并且我不知道开源版本是否包含此功能)
  • 或继续阅读...

我的解决方案目标(可能很复杂)是:

  • 它应该尽可能简单和不言自明
  • 它应该遵守DRY原则(不要重复自己)
  • 除了Maven本身,它不应该具有其他依赖项

该解决方案如下所示(有关完整源,请查看code-repo ):

有两个Maven配置文件:常春藤依赖项在已下载依赖项时激活,而常春藤解析则在尚未下载时激活。 这基于检查最终要复制依赖项的目录:

...
<id>ivy-dependencies</id>
<activation>
  <activeByDefault>false</activeByDefault>
  <file>
    <exists>${basedir}/ivy-lib</exists>
  </file>
</activation>
...
<id>ivy-resolve</id>
<activation>
  <activeByDefault>false</activeByDefault>
  <file>
    <missing>${basedir}/ivy-lib</missing>
  </file>
</activation>
...

不幸的是,这里很少重复,因为Maven似乎没有在配置文件激活部分扩展用户定义的属性,例如$ {ivy.target.lib.dir}。 概要文件还具有其他作用:避免在实际解决依赖关系之前对其进行考虑。

首次运行构建时,它将创建目标目录,并在其中写入Ivy构建所需的文件(ivy.xml,ivysettings.xml和build.xml –在此示例中,我使用了Red5相应文件中某些部分repo ),运行构建并尝试自行清理。 它还会创建一个dependencies.txt文件,其中包含需要添加到依赖项列表中的文本块。 最后,它失败(失败),指示用户再次运行该命令。

在第二(第三,第四等)运行时,依赖项已经存在,因此解决过程将不会重复运行。 选择这种方法而不是在每次构建时都运行解析,因为-尽管解析过程很快,但在一些更复杂的情况下可能会花费数十秒,并且我不想放慢构建速度。

而且,Ivy,Apache BSF框架等是从Maven中央存储库中获取的,因此无需预先安装它们即可成功完成构建。

关于选择$ {ivy.target.lib.dir}的几句话:如果在Maven树中选择它(如示例中选择的那样),您将收到来自Maven的警告,将来可能不再支持。 另外,请确保将目录添加到VCS的忽略机制(.gitignore,.hgignore,.cvsignore,svn:ignore等),以避免将库意外提交给VCS。

如果需要向项目添加新的(Ivy)依赖项,则步骤如下:

  • 删除当前的$ {ivy.target.lib.dir}目录
  • 更新pom.xml中写出ivy.xml文件的部分以包含新的依赖项
  • 运行构建并观察新的依赖关系已解决
  • 更新常春藤依赖项配置文件的依赖项部分以包括新的依赖项(可能是从dependencies.txt复制)

这种方法的一个缺点是基于Maven的系统的高级功能无法使用这些依赖项(例如,依赖项analisys /图形插件,自动下载源代码/ javadocs等)。 可能的解决方法(通常是个好主意)是对最小子集使用此方法-只是在Maven Central中找不到的jar。 所有其余部分(即使它们实际上实际上是从Ivy获取的代码的依赖关系)也应声明为常规依赖关系,以从Maven存储库获取。

最后,我想说的是,这一努力再次向我展示了Maven和Ivy / Ant可以多么灵活,并阐明了CDATA内部的许多极端情况(如我们如何逃脱] –我们将其分成两部分)。 而且它也可以进行进一步的调整(例如:将一个干净的目标添加到ivy-resolve配置文件中,因此您可以使用mvn clean -P ivy-resolve删除目录,或者将所有下载的jar重新添加到一个jar中例如像这样 ,这样就避免了每次更改Ivy依赖项列表时都需要修改pom文件-这样,再次签名的JAR也无法重新添加,因此也不是通用解决方案。

参考: Transylvania Java用户组的 JCG合作伙伴 将Maven与Ivy集成在一起

相关文章 :


翻译自: https://www.javacodegeeks.com/2011/10/integrating-maven-with-ivy.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用IDEA集成Maven时,可以按照以下步骤进行操作: 1. 打开IDEA,点击顶部菜单栏的"File",选择"Settings"。 2. 在弹出的窗口中,选择"Build, Execution, Deployment",然后选择"Maven"。 3. 在"Maven"设置页面中,点击"Importing"选项卡。 4. 确保"Use Maven output directories"选项已勾选,这样IDEA将使用Maven的输出目录来编译和运行项目。 5. 在"Maven home directory"字段中,点击右侧的"..."按钮,选择你的Maven安装目录。 6. 点击"OK"保存设置。 完成以上步骤后,IDEA就成功集成Maven。你可以在项目的根目录中找到一个名为"pom.xml"的文件,这是Maven项目的配置文件。通过编辑这个文件,你可以配置项目的依赖关系、构建过程和其他相关设置。 引用中提到,Maven是通过一套命令来完成项目构建过程的,但这些命令可能不太好掌握。因此,通常我们会将Maven与其他集成工具配合使用,以发挥最大的能力。引用展示了一个典型的Maven项目的配置文件示例,其中定义了项目的基本信息和依赖关系。引用则展示了一个简单的Maven项目的代码示例,其中使用了Maven的一些特性,如依赖管理和日志记录。 综上所述,当你在IDEA中集成Maven后,你可以更方便地管理和构建项目,通过配置pom.xml文件来管理项目依赖关系,以及使用Maven的命令和功能来进行构建、测试和部署。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值