ivy maven

问题是:您在Ivy存储库中(只有那里)有一些资源,您想在基于Maven的项目中使用这些资源。 可能的解决方案:

  • 由于Ivy可以轻松使用Maven样式的存储库(因此,您的Ivy客户端可以继续使用Ivy并进行一些微小的配置更改,因此将存储库迁移到Maven)(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

ivy maven

ivy maven_将Maven与Ivy集成相关推荐

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

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

  2. 将Maven与Ivy集成

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

  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. spark1.4加载mysql数据 创建Dataframe及join操作连接方法问题
  2. 中国电子学会图形化四级编程题:加减法混合运算器
  3. 无人驾驶中的目标检测--MODNet: Moving Object Detection Network for Autonomous Driving
  4. 一个考察函数基础知识的题
  5. 简单解决XP共享连接数10限制
  6. C语言经典递归算法之和式分解
  7. typedef struct引起的结构体问题
  8. pythonsubprocess执行多条shell命令_Python获取shell管道数据/输入的2种方法: subprocess子进程 ......
  9. 【图像隐写】基于matlab LDPC编码译码改进DCT水印嵌入提取【含Matlab源码 832期】
  10. 年终总结:我的2016
  11. BootDo平台数据库使用Oracle
  12. python订餐系统_用python编写的公司订餐系统的审核脚本
  13. 迅捷PDF转换器如何将PDF文档转成Word
  14. 更换计算机名后打不开PPT,PPT打不开的原因和解决办法 从检查开始 -电脑资料
  15. 布道微服务_18服务配置中心设计方案
  16. Cortex-M4芯片介绍
  17. 【机器学习实战】KNN
  18. 去广告神器(Adblock Plus离线安装)
  19. AI如何练就读唇术?唇语识别数据功不可没
  20. 如何修改文件的创建时间?

热门文章

  1. 班级日常分享 | 一天一瞬间!
  2. Boostrap技能点整理之【bootstrap简介】
  3. 比特(bit)和字节(byte)(1byte=8bit)
  4. Struts2下创建自定义类型转换器(表单中日期的处理)
  5. spark sql uv_使用Spark Streaming SQL进行PV/UV统计
  6. linux更改桌面壁纸的脚本,自动更换桌面壁纸的脚本,支持Ubuntu 18.04系统
  7. matlab盒子分形维数_分形:盒子维数
  8. no [query] registered for [filtered] in es7 的解决方法
  9. wxpay-api:pay_J2Pay – API响应
  10. 用xshell传输jdk_在JDK 9中将InputStream传输到OutputStream