`
star65225692
  • 浏览: 268245 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类

已经使用ant的项目如何利用maven来管理依赖

阅读更多

maven对于管理大型项目来说是不错的东西, 当然也可以仅用它来做依赖管理 (类似的有IVY), 不过我们有一些项目已经使用了ant来构建, 那么如何能二者兼得? 对ant的build.xml做小小的改动就可以同时支持使用maven来做依赖管理, 也可以使用ant来做构建. --- 当然简单的构建其实不需要ant, maven完全可以胜任.多PHP服务器实现多session并发运行


Maven的一些特性

  •   可以方便进行依赖管理
  •   提供了标准的目录结构, 保证大家统一. (也可以覆盖默认设置)
  •   利用profile解决测试, 生产环境的配置问题
  •   提供了标准的构建任务, 不需要自己写
  •   多个项目可以集中管理, 可以树状结构管理, 一目了然. 可以快速建立起开发环境. 基本上几步就可以编译项目了, 相反手动方式下, 每个项目都要配置依赖就要累死了.
  •   基于约定的方式, 对于特殊情况处理起来有一些麻烦, 一些情况下ant更灵活方便.




我们的目标

1. 对喜欢maven的人, 能快速利用maven创建新的项目, 而不用痛苦地去一个一个找依赖, 作为普通开发者可以不关心复杂的build.xml, 或者直接用maven构建
2. 对原本使用ant脚本的项目, 在要求兼容maven的情况下, 仅仅添加maven的依赖管理, 同时可以为ant提供依赖包的自动收集, 不需要手动自己找.
3. 推行maven的使用, 快速创建开发环境.
4. subversion不在保存一堆一堆巨大的jar包


本文的内容主要是针对上面的第二条, 当然最终是希望推行maven, 方便管理.

首先我们要安装好ant, maven2, 配置好环境变量, 修改maven的缓存路径.

然后安装 http://maven.apache.org/ant-tasks/index.html 包, 可以直接放在ant的lib目录下, 当然还有其他方式, 例如在build.xml里指定路径.


准备pom.xml , 针对本文所说情况, 只需要写基本信息和依赖包配置即可.

举例:


<? xml version="1.0" encoding="UTF-8" ?>
< project  xmlns ="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation
="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
    
< modelVersion > 4.0.0 </ modelVersion >

    
< groupId > com.test </ groupId >
    
< artifactId > maventest </ artifactId >
    
< name > Maven Test </ name >
    
< version > 1.0 </ version >

    
< build >
        
< plugins >
            
< plugin >
                
< groupId > org.apache.maven.plugins </ groupId >
                
< artifactId > maven-compiler-plugin </ artifactId >
                
< configuration >
                    
< source > 1.6 </ source >
                    
< target > 1.6 </ target >
                
</ configuration >
            
</ plugin >
        
</ plugins >
    
</ build >

    
< dependencies >
        
< dependency >
            
< groupId > org.jgroups </ groupId >
            
< artifactId > jgroups </ artifactId >
            
< version > 2.10.0.GA </ version >
        
</ dependency >
        
< dependency >
            
< groupId > commons-lang </ groupId >
            
< artifactId > commons-lang </ artifactId >
            
< version > 2.5 </ version >
        
</ dependency >
        
< dependency >
          
< groupId > junit </ groupId >
          
< artifactId > junit </ artifactId >
          
< version > 3.8.1 </ version >
          
< scope > test </ scope >
        
</ dependency >
    
</ dependencies >

</ project >



如果有本地仓库, 还可以配置repository. (推荐优先使用本地服务器), 这个文件内容很少, 主要是依赖包的信息, 也是我们最关注的信息.


下面我们来修改我们的build.xml, 为ant提供依赖服务:


< project  name ="jgroups"  basedir ="."  xmlns:artifact  ="urn:maven-artifact-ant"   >

    
<!--  存放依赖包的目录  -->
    
< property  name ="build.lib.dir"  location ="./lib"   />

    
<!--  find maven-ant-tasks, you can use classpathref to specify the jar, or just copy the jar to ant/lib   -->
    
< typedef   resource  ="org/apache/maven/artifact/ant/antlib.xml"   uri ="urn:maven-artifact-ant"    />

    
<!--  maven的文件  -->
    
< artifact:pom   id  ="maven.project"   file  ="pom.xml"     />

    
< artifact:dependencies  filesetId ="deps.fileset.compile"  useScope ="compile" >
        
<!-- <pom file="pom.xml"/> -->
        
< pom  refid ="maven.project"    />
    
</ artifact:dependencies >

    
< artifact:dependencies  filesetId ="deps.fileset.test"  scopes ="test" >
        
< pom  refid ="maven.project"    />
    
</ artifact:dependencies >

    
< artifact:dependencies  filesetId ="deps.fileset.provide"  scopes ="provide" >
        
< pom  refid ="maven.project"    />
    
</ artifact:dependencies >

    
< target  name ="lib.init" >
        
< copy  todir ="${build.lib.dir}/compile" >
            
< fileset  refid ="deps.fileset.compile" />
            
< mapper  type ="flatten" />
        
</ copy >
        
< copy  todir ="${build.lib.dir}/test" >
            
< fileset  refid ="deps.fileset.test" />
            
< mapper  type ="flatten" />
        
</ copy >
        
< copy  todir ="${build.lib.dir}/provide" >
            
< fileset  refid ="deps.fileset.test" />
            
< mapper  type ="flatten" />
        
</ copy >
    
</ target >


    
<!--   ..其他 ..      -->


</ project >




主要增加了一个target, 就是把maven中定义的依赖包复制到指定目录下, 而不需要自己准备或者从subversion下载.

(ant的其他target也可使用定义的几个变量作为classpath)

一般依赖分三种, 请注意区分, 否则把servlet等jar包发布到服务器, 一般会出错:

  •   compile: 编译, 用于运行时和编译时, 打包发布要包含
  •   provide: 容器提供的类, 主要用于编译, 打包发布时不包含, 例如servlet-api
  •   test: 仅用于编译和运行测试用例, 打包时不包含.




使用方法 :

  •   checkout项目
  •   使用ide的方式导入maven项目. 如果需要手动: 运行ant lib.init   (如果下载jar时包出错, 注意检查groupId, artifactId和版本号.)
  •   手动创建项目, 指定library, 就不需要一个一个找了. (如果导入maven项目的方式, 则一切自动会配置好)




分享到:
评论

相关推荐

    maven下通用的ant配置文件

    maven下通用的ant配置文件,只要0积分。只需修改11行末尾的target/自己的工程名即可。

    apache maven入门教程

    在JAVA界,可能大家比较熟悉ANT,它提供了强大的功能,让...在网上搜索发现众多开源团队中有一个国内开源团队也使用了MAVEN管理项目,并可以基于框架来生成项目原型。 本文以新建一个项目为实例,讲解MAVEN的基本应用

    Maven权威指南 很精典的学习教程,比ANT更好用

    Maven依赖管理 (Dependency Management) 3.5.6. 站点生成和报告 (Site Generation and Reporting) 3.6. 小结 4. 定制一个Maven项目 4.1. 介绍 4.1.1. 下载本章样例 4.2. 定义Simple Weather项目 4.2.1...

    maven打包部署

    在我们做Java项目的时候,往往最困难的就是如何启动项目。项目启动之前,我们要配置好所有的逻辑关系。...构建一个Java项目可以使用很多工具,相信许多组织必须在 Apache Ant 和 Apache Maven 之间做一个选择。

    版本管理及项目构建和maven的介绍使用

    1.svn版本管理。 2.项目构建的方式,主要介绍Ant和maven,...包含Ant的简介及常用任务,maven的简介、环境配置、maven项目开发,maven依赖、maven仓库等概念以及maven生命周期和maven插件、聚合和继承等。 3.推荐的书籍

    Maven3.0权威指南

    Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.  如果你已经有十次输入同样的Ant targets来编译你的代码、jar或者war、生成javadocs,你一定会自问,是否...

    maven window下安装包

    第11章:用Maven管理项目版本/11.4 版本管理举例/11.4.1 插件:maven-release-plugin 第11章:用Maven管理项目版本/11.4 版本管理举例/11.4.2 新建maven项目 第11章:用Maven管理项目版本/11.4 版本管理举例/11.4.3 ...

    maven快速培训教程

    maven是一个用于java项目管理和自动构建的软件工具。 项目开发中疑问 什么是maven 为什么要使用maven maven和ant的区别 maven安装 一个使用maven的例子 资源库和依赖 POM文件 maven插件 常见用法 源码目录结构 maven...

    Maven的安装及整合

    来管理项目的构建,报告和文档的软件项目管理工具。在Maven中每个项目都相当于是一个对象,对象(项目)和对象(项目)之间是有关系的。关系包含了:依赖、继承、聚合,实现Maven项目可以更加方便的实现导jar包、...

    Maven2之旅 构建项目 文档编制

    自从Java诞生以来,打包,测试,代码检测和发布Java工程就成为困扰Java程序员的枷锁,即使Ant出现,程序员深受困扰,而且Ant的 Xml格式的Build文件的学习阶梯又给程序员加重了一层负担.程序员头顶上的天空依然阴霾,只到有...

    Maven2 的新特性.7z

    如今 Maven2 已经推出,Maven 的官方网站称,Maven2 相对于 Maven1 是一个相当大的转变,甚至不惜牺牲兼容性来达到这一目的。(为了 Maven1 的用户着想,Maven1 仍在继续他的使命。)如此大的变动到底换来了什么样的...

    Maven最新版是一个流行的Java项目构建系统 目前,绝大多数开发人员都把Ant当作Java编程项目的标准构建工具.rar

    Maven是一种Java项目管理工具,可以管理项目构建、依赖关系和文档。Maven使用基于XML的配置文件,称为pom.xml,来定义项目的结构和构建过程。 Maven的优点 易于使用这一特点使得Maven在软件开发中变得更加便捷。...

    Maven 私服 Nexus3

    采用一种被称之为Project Object Model(POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中, 通过该文件Maven可以管理项目的整个生命周期,包括清除、编译,测试,报告、打包、部署等等。...

    java-maven-apache-ant-zip-2.3-jar包依赖

    maven jar包依赖 com.ckfinder:apache-ant-zip:jar:2.3

    Maven实战(高清版)

    背景案例第5章 坐标和依赖第6章 仓库第7章 生命周期和插件第8章 聚合与继承第9章 使用nexus创建私服第10章 使用maven进行测试第11章 使用hudson进行持续集成第12章 使用maven构建web应用第13章 版本管理第...

    Maven介绍安装配置坐标依赖等等

    Maven简介,maven与ant比较,windows下安装配置,坐标依赖,仓库,部署第三方构建

    ant-1.6.5.jar.zip

    标签:ant-1.6.5.jar.zip,ant,1.6.5,jar.zip包下载,依赖包

    zookeeper服务器依赖配置,包含了zookeeper的bin包,和相关依赖maven3.8.6,ant1.10.12

    zookeeper服务器依赖配置,包含了zookeeper的bin包,和相关依赖maven3.8.6,ant1.10.12,解压后,配置环境变量,点击apachezookeeper-3.8.0-bin里的相关执行文件即可运行

    Maven学习资料个人总结

    第二:Maven对所依赖的包有明确的定义,如使用那个包,版本是多少,一目了然。而ant则通常是简单的inclde 所有的jar。导致的最终结果就是,你根本无法确定JBoss中的lib下的common-logging 是哪个版本的,唯一的...

    Maven完全手册

    Maven完全手册 maven2 起步 相信maven1 大家都已经很熟悉了,具体maven能做什么,就不详细说了。个人觉得maven在开源项目中用的还是比较多的,...不过maven 也已经考虑到了,可以使用exclusions来排除相应的重复依赖

Global site tag (gtag.js) - Google Analytics