`
star65225692
  • 浏览: 273224 次
  • 性别: 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项目的方式, 则一切自动会配置好)




分享到:
评论

相关推荐

    Maven2.Ant.Junit合集

    Maven2(现在已经是Maven3)是另一个重要的Java项目管理工具,它以项目对象模型(Project Object Model, POM)为基础,自动化项目的构建、报告和文档生成。POM是一个XML文件,包含了项目的配置信息,如依赖关系、...

    Maven 与 Ant 之比较

    描述中的链接指向了一篇博客文章,虽然具体内容无法在此提供,但通常这类文章会详细阐述Maven和Ant的区别,包括它们的工作原理、配置方式、依赖管理、社区支持和项目结构等方面。 **Maven 知识点** Maven 是一个...

    maven ant thrift0.9.0

    例如,你可以使用Ant来定义特定的构建任务,如生成Thrift代码,然后使用Maven来管理这些生成代码的依赖,并负责整个项目的构建流程。在Thrift 0.9.0版本中,可能需要配置特定的Maven或Ant插件来支持Thrift的编译。 ...

    maven-ant-tasks-2.1.3.zip

    在 Ant 脚本中,可以使用 `dependency` 元素来下载指定的 Maven 依赖,并将其添加到项目的 classpath 中。以下是一个简单的示例: ```xml &lt;dependency pomFile="pom.xml" pathId="maven.class.path" filesetId=...

    通向架构师的道路(第二十三天)maven与ant的奇妙整合.docx

    然后,我们可以使用 Maven-Ant-Task 在 Ant 项目中声明依赖项,并使用 Maven 依赖管理来管理依赖项。 六、结论 Maven 和 Ant 是两种常见的自动化构建工具,它们都有其独特的优点和缺陷。通过将 Maven 和 Ant 整合...

    maven下通用的ant配置文件

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

    JAVA网上会议系统开源源码(采用Ant和Maven管理)

    两者结合使用,可以在保留Ant的灵活性的同时,利用Maven的强大功能来管理项目的复杂性。 源码结构通常会包括以下几个部分: 1. **源代码**:分为Java源代码(src/main/java)和资源文件(src/main/resources),...

    Maven仓库管理-Nexus

    Maven 仓库的初衷是为了解决版本管理的问题,通过 Group Id, Artifact Id, version 来管理 jar 包,实现了依赖管理的方便性。 Maven 仓库可以分为两个概念:本地仓库和远程仓库。本地仓库是远程仓库的一个缓冲和...

    Maven的简单使用

    这一步骤是利用Maven来管理项目的基础。 #### Maven解决的问题 - **依赖管理问题**:Maven提供了一套完整的依赖管理机制,简化了依赖管理的复杂性。 - **项目构建问题**:Maven提供了一套标准的构建流程,使得项目...

    Maven2 配置指南(java 项目管理之路)

    - **Maven仓库**:存储和管理项目依赖项的地方,分为本地仓库和远程仓库。 - **依赖管理**:Maven自动解析项目依赖并按需下载至本地仓库。 - **站点生成和报告**:Maven可以自动生成项目文档和报告。 #### 四、...

    maven compare to the ant

    - **特点**:采用约定优于配置的原则,通过生命周期管理项目构建过程。 - **优势**:强大的依赖管理和项目信息管理能力;易于理解和维护。 - **应用场景**:适用于大型、复杂的项目,尤其是需要统一构建标准和...

    shell脚本一键安装Ant和Maven

    Maven通过使用一个统一的项目对象模型(POM)来描述项目,并自动下载所需的库,极大地简化了项目配置和依赖管理。 "mainstall.sh"这个文件很可能是一个bash shell脚本,用于自动化安装Ant和Maven的过程。通常,这样...

    maven使用文档,maven使用文档

    Maven 提供了统一的标准流程来管理项目的生命周期、依赖关系以及项目信息等,极大地提高了开发效率并简化了构建过程。 - **特性一:统一的构建过程** Maven 定义了一系列的生命周期(lifecycle),这些生命周期...

    maven安装和使用

    4. **依赖管理**:Maven使用POM(Project Object Model)来定义项目结构和依赖关系,这使得依赖管理变得非常清晰且易于维护。此外,Maven还支持依赖冲突的解决策略,确保项目使用的依赖版本始终是最合适的。 #### 三...

    ant-1.10+Maven-3.5i最新官方版下载

    Maven使用POM(Project Object Model)来管理项目的依赖关系、构建过程和配置信息。与Ant相比,Maven提供了一套标准的目录结构和生命周期,使得项目构建更加规范化。它通过中央仓库自动下载并管理项目所需的依赖,极...

    ssm的maven项目和ssm的web项目

    Maven是Apache软件基金会的一个开源项目,主要负责管理项目的构建、依赖和生命周期。 在Spring框架中,它是一个全面的企业应用框架,提供了丰富的功能,如IOC(Inversion of Control,控制反转)和AOP(Aspect ...

    项目构建maven

    与Ant、Gradle等其他构建工具有所不同,Maven提供了一种更简单、更一致的方式来管理项目构建,通过共享的插件和标准的生命周期阶段,使得项目间的构建过程更加标准化。 【压缩包子文件的文件名称列表】中的各个文件...

    maven plugin maven plugin

    总的来说,Maven 插件是 Maven 构建系统的核心组件,它们提供了一系列强大的功能,帮助我们有效地管理项目、构建工件并与其他工具集成。熟练掌握 Maven 插件的使用,可以极大地提升开发效率和项目的可维护性。

Global site tag (gtag.js) - Google Analytics