1. Antx仓库到Maven仓库管理
Antx是通过svn来管理第二方库和第三方库的,Maven也是通过第三方工具来实现,目前比较流行的仓库管理软件是Nexus,通过 Maven仓库管理,我们既可以对第三方库进行统一管理,又可以对第二方库甚至SNAPSHOT库进行管理。我们为什么要建立一个本地仓库呢,当然你可以 通过远程的Maven仓库来获取你所需要的jar,但是建立本地仓库更高效,更利于我们的管理,我们在本地,甚至整个公司,集团建立这样一个统一仓库以 后,我们不再需要把所有的jar包都存在本地开发机了,通过Maven我们可以通过很简单的命令来发布我们的第二方库到仓库管理器。这里简单说一下 SNAPSHOT,简而言之,SNAPSHOT就是一个临时版本,Maven可以像管理其他Release版本一样管理它,它在两个模块依赖开发的时候是 相当有价值的,这点我会在“版本管理”一文当中详细描述。
2. 转换Antx的第二方库和第三方库到Maven仓库
1)发布第二方库到Maven仓库中去
2)第三方库,比如apache的log4j.jarMaven会自动从Maven的中央仓库下载
3)转换module.xml到pom.xml,Maven根据module的多少只需要一个或者多个pom文件,我们需要根据依赖关系把相应的依赖以Maven的格式做相应的转换。
3. 从Project.xml到pom.xml
antx 使用Project.xml来描述项目的基本信息比如依赖,结构等,使用project.jelly来描述项目的目标,比如default="jar", 表示本project.xml的默认目标是生成一个jar包, antx根据工程目标来调用不同的插件。Maven2.0中不再支持jelly的功能,Maven用绑定lifecycle来代替jelly中的 default goal的概念,maven将项目构建定义了一些标准的lifecycle, 简单列举,比如分为validate->initialize->compile->process- reslources->test-comile->process-test-resources->test->package->install->deploy maven的插件如果需要隐式执行,需要将插件绑定到Lifecycle的某个阶段。比如我们要将autoconfig的内容同步到 antx.properties,我们可以写一个插件并将其绑定到initilize的生命周期,按antx现有的策略同步autoconfig到 antx.properties,而在Install phase,autoconfig会根据antx.properties 的配置WAR,EAR,或JAR中的vm模板按antx.properties的配置项生成实际的值。
可能的问题:
1)将Project.xml中对二方库和三方库的依赖转换到对Maven Repository中的依赖。 对二方库的依赖可以直接按自己定义的规则转化,对三方库的转换依赖比较麻烦,有的需要手动处理。
2)将Jelly脚本中的内容使用不同的插件来实现。
3)有的三方库中的有的Jar被我们修改过,这种依赖需要手动处理上传到我们的Artifactory中,然后处理其依赖。
4. 依赖管理问题
1)Maven中的依赖和继承
Maven和antx的思想是类似的,所以项目的依赖和继承的功能他 们都支持。Maven中的比较常见的做法是,定义一个parent POM,里面定义 了常用的插件,Maven库的地址,部署的目标库地址,Validate白名单等。项目的的总控文件,继承自这个Parent POM,可以简化项目的配置。
2)依赖冲突问题
• 一种的依赖冲突是不用关心的,比如两个开源的三方库,引用了不同的Log4j,因为log4j的新版本可以兼容旧版本。我们可以认为这样的依赖冲突是可以自动解决的。
• 另一种是我们关心的,比如ice 3.1和3.2,新版本将TCP连接方式改成了短连接,如果这种依赖升级,必须通过严格的测试,包括压力测试才能同意升级。
解 决这样问题的方案是:我们可以做一个检查版本依赖检查的插件,必须通过依赖检查才能打包发布。 我们会在Parent POM中配置一个白名单,只有在白名单中中指明的jar包,比如log4j,commonlogging,即使有冲突,也能通过检查。 如果不在白名单中的冲突,我们会报出详细的错误信息,并且现在的Maven的Eclipse插件已经能用图形化的方式将依赖以及依赖冲突表示出来,方便我 们解决冲突。而Parent POM的修改权,会放给SCM或技术负责人,只有他们才能强制指定构建版本号,开发人员如果遇到版本冲突需要强制指定版本号,必须通过SCM或技术负责人 修改才能够通过构建。 做到对依赖冲突的强制指定至少是心中有数。比如 refund-domain依赖了mina-core 1.1.5,而notify-client依赖了1.2.3,会用红色箭头标出冲突的依赖,如果mina没有在我们的白名单中,那么这次构建是不会成功 的。
5. Maven怎么支持Jelly的功能
Maven不支持jelly,但是可以通过插件完成相同的功能。 现在在Antx中的Jelly使用场景有:
• (1)在Project.jelly中指定default goal,比如jar,ear,car,在执行reactor的时候,会根据defaultgoal调用不同的插件来打包。 Maven中可以有一个对应的概念Packaging,可以实现相同的功能。Packaging不一样,在Maven Package阶段,Maven也会调用不同的插件来实现 打包的功能。
• (2)有的Jelly中在部署阶段实现了一些Copy文件的功能,我查看TradeManager和Denali中的Jelly文件, 都是部署的时候,比如将密钥文件从一个地方copy到项目中,然后打包。 Maven中的Reasource插件可以实现同样的功能,比如将外部资源文件Copy到target/class目录,然后打包,如果还有的jelly 插件实现,
6. Maven怎么支持autoconfig
auto-config中会把需要filtering的资源文件的路径列在script中,maven中使用resources插件来做这件事情,需要将其列入pom.xml中 。
分享到:
相关推荐
- **环境变量设置**:设置`ANTX_HOME`环境变量指向`dist/antx`目录,并将`$ANTX_HOME/bin`添加到`PATH`环境变量中。 - **设置第二方类库**:通过SVN获取`repository.project`,并根据实际位置更新`antx.properties...
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
springboot-antx-demo springboot项目使用antx Demo antx是阿里的项目管理方面的工具,这里主要用到的是其资源替换方面的功能,非常好用 在JAR中,只是包含代码即可,所有的配置信息,可以之后根据环境,进行方便的...
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
1.Ant通过命令自动编译出build.xml文件2.ANT的配置及简单实用3. Ant命令行打包应用
3. **aire-config与YAD结合**:aire-config 利用了 YAD 的这些特性,创建了一个易于使用的Wi-Fi配置界面,用户可以在这里查看可用的无线网络、连接到特定的网络、输入密码以及进行其他相关的网络设置。 **二、aire-...
这通常涉及到创建一个测试类,模拟不同情况(如正常读取、不存在的键、错误的文件路径等),并验证结果是否符合预期。 总结,Java中的`.properties`文件是管理和读取应用程序配置的有效方式。使用`Properties`类...
同时,还提供了一个拖拽组件栏,用户只需简单拖拽,即可将所需的组件添加到流程图中。 除了节点的编辑,我们还为用户提供了一个属性配置栏。在这个栏目中,用户可以详细配置每个节点的属性,如名称等,使得流程图...
4. 使用`make`进行编译,`make check`运行测试(如果项目包含),`sudo make install`将软件安装到系统中。 这个过程就是`autoconfig`在Linux开发中的典型应用,它极大地简化了跨平台软件的构建和安装。
在开发Java应用时,我们经常会遇到配置文件,如`.properties`文件,用于存储应用程序的配置信息。这些文件可能包含中文字符,但在某些情况下,使用IntelliJ IDEA打开这些文件时可能会出现中文乱码的问题。...
淘宝的技术架构随着业务的增长而不断进化,从最初的LAMP架构到后来的Java三层架构,再到引入微服务等现代技术,始终以满足“四高”需求为目标。这一系列技术变革不仅支撑了淘宝的快速发展,也为其他电商平台提供了...
2. **V1.1 (2004.1–2004.5)**:为了解决V1.0中的数据库性能问题,并为后续升级做准备,淘宝将数据库从MySQL迁移到Oracle,并引入了SQLRelay中间件。这一阶段虽然解决了部分问题,但仍然存在开发效率低下的情况。 3....
基于Vue3+ts+element-plus+AntV X6实现的流程图编辑器,框架核心功能已经搭好,组态化呈现,自定义节点、属性绑定、样式调整等,采用pinia统一管理各个属性,根据自己需求在此基础上自定义调整修改添加等,最终可...
在IT行业中,AntV X6 是一款强大的图形编辑框架,主要设计用于构建可定制的、交互式的图编辑应用。它提供了丰富的图形绘制和操作功能,适用于流程图、拓扑图、思维导图等多种应用场景。本篇文章将深入探讨如何在Vue...