ivy maven_将Maven与Ivy集成

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

video 微信 标签层级过高_什么是微信小程序二级分销系统?如何玩转?

微信二级分销系统是通过帮助企业打造微分销商城&#xff0c;从店铺、商品、会员、分销、营销、数据分析等不同功能模块&#xff0c;让一个微信店铺焕发无限可能。微分销系统基于二级分销&#xff0c;以全员开店&#xff0c;以客推客模式迅速推动销量增长&#xff0c;快速招募微…

docker搭建简单的ctf题目

0x01 docker常用命令 1.拉取镜像。 docker pull [image] 2.查看docker当前镜像。 docker image ls 或 docker images 3.新建一个docker容器&#xff0c;并映射端口号。 docker run -d -p [host port]:[docker port] [image] 4.查看运行中的docker容器。 docker ps -a 5.进入一…

使用爱思助手备份苹果手机数据的方法

背景:前段时间刚给对象买的一个紫色的苹果11,128G的那种,最近发现电池电量忽然就少很多,电池除了点问题,去苹果售后店准备换一个电池,还在保修期,区分一下售后店(回厂修十多天)及专卖店(有备用电池)。今天提前备份一下数据,防止数据丢失,一般内存不大可以使用手机…

高级Java教程

课程大纲 学习Java基础很容易。 但是&#xff0c;真正钻研该语言并研究其更高级的概念和细微差别将使您成为一名出色的Java开发人员。 网络上充斥着“软”&#xff0c;“便宜”&#xff0c;“低端” Java教程&#xff0c;但是所缺少的实际上是将您带入新的高度的材料。 本课程…

Cool!15个超炫的 CSS3 文本特效【上篇】

每一个网页设计师都希望创建出让用户能够赏识的网站。当然&#xff0c;这是不可能满足每个人的口味的。幸运的是&#xff0c;我们有最强大的工具和资源。实际上&#xff0c;我们非常多的网站模板&#xff0c;框架&#xff0c;内容管理系统&#xff0c;先进的工具和其他的资源可…

cmake 构建路径_新手必备:win10 系统下 VSCode+CMake+Clang+GCC 环境的搭建

打算用C/C把基本的数据结构与算法实现一遍, 为考研做准备, 因为只是想实现算法和数据结构, 就不太想用VisualStudio, 感觉VSCode不错, 遂在网上找了一些教程, 结合自己的需求, 配置一下开发环境。安装软件1、CMakeCMake是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists…

一文带你了解腾讯位置服务的开发与接入

背景:地图是空间信息的图形传递形式,是信息传输工具之一。编图者须充分掌握原始信息,研究制图对象,结合用图要求,合理使用地图语言,将信息准确地传递给用图者。用图者须熟悉地图语言,深入阅读分析地图信息,形成对制图对象正确而深刻的认识。 腾讯位置服务为各类应用厂商…

网络安全单兵工具 -- YAKIT

网络安全单兵工具 -- YAKIT 一、下载及安装 1、原作者及下载地址 https://github.com/yaklang/yakit2、双击下载好的exe文件&#xff0c;点击核心引擎安装与升级 3、点击意见更新Yak引擎 4、以管理员启动 5、点击连接引擎 二、使用方法 1、扫描端口/指纹 2、爆破与未授权 3、专…

Java - 文件(IO流)

Java - 文件 (IO)流的分类&#xff1a;> 文件流&#xff1a;FileInputStream | FileOutputStream | FileReader | FileWriter> 缓冲流&#xff1a;BufferedInputOutStream | BufferedOutputStream | BufferedReader | BufferedWriter> 转换流&#xff1a;InputStreamR…

windows配置samba客户端_如何搭建与Windows客户机结合使用的Samba文件服务器?

据Samba项目网站声称&#xff0c;Samba是一组开源/免费软件套件&#xff0c;它为SMB/CIFS客户机提供了无缝顺畅的文件和打印服务。不像实现SMB/CIFS网络协议的其他系统(比如面向HP-UX的LM Server、面向OS/2的LAN Server或VisionFS)&#xff0c;Samba(及其源代码)可以免费获取(最…

Apache 降权 禁用php,Windows下的apache降权

0x00 准备与目标 目标&#xff1a;apache服务降权 操作系统&#xff1a; Windows Server 2012 R2 Standard 环境&#xff1a;phpstudy2018 0x01 操作 1.安装启动服务 打开phpstudy2018&#xff0c;其他选项菜单--》服务管理器--》Apache--》安装服务。 运行模式选择系统服务&am…

孙叫兽进阶之路之压力与绩效

前言:如果我们把拉弦比作压力,把箭比作人,把箭的射程比作工作绩效,我们可以看到:压力对促进工作绩效有着一定的积极作用,但压力如果超出了人的承受范围,就会产生消极的影响。 具有挑战性能产生积极性压力最好,记住“今天工作不努力,明天努力找工作”

openjdk_从CLI监视OpenJDK

openjdk目前&#xff0c;我大部分时间都在Java虚拟机 &#xff08;JVM&#xff09;中和周围进行大量工作&#xff0c;大部分时间是在Linux上。 当事情变得不对劲并且我试图确定原因时&#xff0c;我接触了Java性能分析工具。 这些工具有两种形式&#xff0c;一种是精美的GUI&am…

Html.RenderPartial和Html.Partial在Razor视图中的区别

Html.RenderPartial和Html.Partial在Razor视图中的区别两者都可以输出一个Partial视图&#xff1b;其区别如下&#xff1a;1. Partial有返回值(MvcHtmlString)&#xff1b;RenderPartial没有返回值(Void)。  定义 1 //PartialExtensions.Partial 方法 (HtmlHelper, String) 2…

孙叫兽进阶之路之软件测试基础知识

简介:软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。 从是否关心软件内部结构和具体实现的角度划分,测试方法主要有白盒测试和黑盒测试。白盒测试方法主要有代码检査法、静态结构…

交叉驰豫的影响因素_深度讲解:膝关节韧带为什么容易断裂?这5点因素影响非常大...

小科普&#xff1a;ACL 膝关节前交叉韧带 PCL后交叉韧带除了了解ACL损伤机制&#xff0c;弄清ACL损伤的风险因素对预防ACL损伤也是至关重要的。ACL损伤的风险因素也包括解剖学因素、生物力学因素、神经肌肉因素。所有的风险因素的确定有助于预防损伤。解剖学风险因素包括关节松…

CNVD-2022-10207:向日葵RCE

一&#xff1a;漏洞摘要 向日葵远程控制是一款面向企业和专业人员的远程pc管理和控制的服务软件。可以在任何有网络的情况下&#xff0c;轻松访问并控制安装了向日葵客户端的远程主机。同时还能实现远程文件传输、远程视频监控等功能&#xff0c;这不仅为用户的使用带来很多便捷…

手把手教你用Java设计并实现一个城市公交查询系统

背景:近年来, Internet推动了以互联网技术为核心的各项工作蓬勃展开,互联网的强大也大大的促进了社会的发展,整个社会信息化进程逐步加快,网络也变成了我们日常活动中越来越重要的组成成分。为了使得我国公交乘客出行及查询有关信息更方便,本文运用JAVA语言技术,Jsp技术,…

[Cogs14] [网络流24题#1] 飞行员分配方案 [网络流,最大流,二分图匹配]

经典二分图匹配&#xff0c;可以用匈牙利算法&#xff0c;也可以用最大流 代码如下&#xff08;Dinic&#xff09;&#xff1a; #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <c…

叉/连接框架

本文是我们学院课程中名为Java Concurrency Essentials的一部分 。 在本课程中&#xff0c;您将深入探讨并发的魔力。 将向您介绍并发和并发代码的基础知识&#xff0c;并学习诸如原子性&#xff0c;同步和线程安全之类的概念。 在这里查看 &#xff01; 目录 1.简介 2.叉/连…