问题是:您在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集成在一起 。

相关文章 :

  • 任何软件开发公司应存在的服务,实践和工具,第1部分
  • 在领域驱动的设计,贫乏的领域模型,代码生成,依赖项注入等方面……
  • OSGi将Maven与Equinox结合使用
  • Java模块化方法–模块,模块,模块
  • 使用Spring AspectJ和Maven进行面向方面的编程
  • GWT EJB3 Maven JBoss 5.1集成教程

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

将Maven与Ivy集成相关推荐

  1. ivy maven_将Maven与Ivy集成

    ivy maven 问题是:您在Ivy存储库中(只有那里)有一些资源,您想在基于Maven的项目中使用这些资源. 可能的解决方案: 由于Ivy可以轻松使用Maven样式的存储库(因此,您的Ivy客户端 ...

  2. 【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )

    文章目录 一.Gradle 自动下载并配置构建环境 二.Gradle 提供 API 扩展与开发工具集成 三.Gradle 内置 Maven 和 Ivy 依赖管理 四.Gradle 使用 Groovy ...

  3. Spring 4 MVC+Hibernate 4+MySQL+Maven使用注解集成实例

    Spring 4 MVC+Hibernate 4+MySQL+Maven使用注解集成实例 转自:通过注解的方式集成Spring 4 MVC+Hibernate 4+MySQL+Maven,开发项目样例 ...

  4. maven,spring,mybatis集成错误

    maven,spring,mybatis集成的时候单元测试junit测试没问题,但mvn jetty:run 就报错误 错误: org.apache.ibatis.binding.BindingExc ...

  5. maven基础--IDEA集成

    maven基础--IDEA集成 创建项目 构建项目 查找依赖 依赖范围 provided:已提供依赖范围.编译和测试有效,运行无效.如servlet-api,在项目运行时,tomcat等容器已经提供 ...

  6. Maven实战(四)——基于Maven的持续集成实践

    相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章<持续集成>,该文最早发布于2000年9月,之后在2006年进行了一次修订,它清晰地解释了持续集成的概念,并总结了 ...

  7. centos7搭建git+maven+jenkins快速集成、部署环境(docker方式)(一)

    为什么80%的码农都做不了架构师?>>>    阅读以下内容之前,需要温习下docker.linux基础. 1.下载jenkins的docker镜像 Jenkins仓库地址:http ...

  8. Springboot Gitlab Jenkins Maven Docker 持续集成/持续交付

    Gilab安装教程 http://blog.csdn.net/chenhaifeng2016/article/details/78603216 http://blog.csdn.net/chenhai ...

  9. maven+jenkins+sonar集成搭建

    转载地址:http://blog.csdn.net/wzd_0116/article/details/24651333 集成质量管理平台搭建 第一章Sonar安装...2 1.1下载sonar.2 1 ...

最新文章

  1. 复习03统计学习方法(K近邻KNN)---图片版
  2. CTFshow 文件包含 web116
  3. 文科学业水平测试题软件,学业水平测试:文科备战理科篇
  4. 排序的概念(选择排序1)
  5. python基础教程:懒惰属性(延迟初始化)
  6. 异想-天开 python---while、for、if-else 循环学习
  7. 修罗武神正版游戏服务器,修罗武神正版游戏官网
  8. 建造样式与抽象工厂样式的区别
  9. 【MEMORY ALIGN】内存对齐
  10. 用了10年海尔家电,青岛一音乐老师为海尔写了1首歌
  11. Direct3D Frustum裁剪原理
  12. 51单片机之继电器实验
  13. PHP实现一个在线选择答题系统
  14. 金蝶国际:传统ERP增长稳健 转型云服务持续领跑
  15. 青年同辈应该有大器晚成的心理准备,共勉
  16. UE4UE5 VR开发多人联机RPC的坑
  17. sklearn学习之Spectral Clustering
  18. Qt小项目(二):调色器
  19. 2. 监督学习之分类
  20. Android Studio 学习记录-图形定制

热门文章

  1. java oca_OCA第2部分中的Java难题
  2. vaadin 10+_Vaadin 10+作为CUBA UI的未来
  3. 自动部署 管道 ci cd_自动化测试在CI CD管道中的作用
  4. derby数据库的数据_Derby数据库备份
  5. stripe pay_J2Pay –实施网关
  6. java ee7帮助文档_帮助推动Java EE向前发展
  7. maven mockito_如何:测试Maven项目(JUnit,Mockito,Hamcrest,AssertJ)中的依赖项
  8. redis简单队列java_使用Redis的简单消息队列
  9. cargo maven_与Maven 3,Failsafe和Cargo插件的集成测试
  10. ldap2.8.2_Spring LDAP 2.0.0发布