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

简介: 已经使用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项目的方式, 则一切自动会配置好)


相关文章
|
9月前
|
Java Maven 微服务
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的 maven 依赖
在项目中使用Swagger2工具时,需导入Maven依赖。尽管官方最高版本为2.8.0,但其展示效果不够理想且稳定性欠佳。实际开发中常用2.2.2版本,因其稳定且界面友好。以下是围绕2.2.2版本的Maven依赖配置,包括`springfox-swagger2`和`springfox-swagger-ui`两个模块。
407 0
|
5月前
|
Java 区块链 Maven
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
524 3
|
4月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
322 0
|
Java Maven 开发者
maven项目中官方setting.xml文件
`settings.xml` 是 Maven 的配置文件,用于定义用户或全局级别的构建行为。它包含本地仓库路径、网络代理、服务器认证、仓库镜像及构建配置文件等设置,帮助开发者根据环境定制 Maven 行为,提升构建效率与灵活性。
1063 0
|
7月前
|
Java 测试技术 项目管理
【JavaEE】从 0 到 1 掌握 Maven 构建 Java 项目核心技巧 解锁 Java 项目高效管理实用实例
本文从Maven基础概念讲起,涵盖安装配置、核心概念(如POM与依赖管理)及优化技巧。结合Java Web项目实例,演示如何用Maven构建和管理项目,解决常见问题,助你高效掌握这一强大工具,提升Java开发与项目管理能力。适合初学者及进阶开发者学习。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
274 6
|
8月前
|
存储 Java Maven
Maven系统级别依赖:解决部署时Jar包缺失问题
以上就是关于Maven系统级别依赖解决部署时Jar包缺失问题的解答,希望对你有所帮助。在软件开发中,遇到问题并解决问题是常态,希望你能够善用这些工具,解决你遇到的问题。
544 28
|
11月前
|
缓存 架构师 Java
Maven实战进阶(01)面试官:Maven怎么解决依赖冲突?| 有几种解决方式
本文介绍了Maven的核心功能和依赖管理技巧。Maven是基于项目对象模型(POM)的构建工具,具备跨平台、标准化、自动化等特性。其三大核心功能为依赖管理、仓库管理和项目构建。依赖管理通过pom.xml文件引入第三方组件并自动下载;仓库管理涉及中央仓库、私服和本地仓库;项目构建则通过生命周期管理编译、测试、打包等流程。文章还详细讲解了依赖冲突的解决方法,包括默认规则、手工排除和版本指定等策略。
|
12月前
|
缓存 Java Maven
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法!在处理Maven项目问题时,首先检查Maven配置是否正确。接着通过“File--Invalidata Caches”清除IDEA缓存并重启。使用Maven命令`mvn dependency:purge-local-repository`和`mvn dependency:resolve`清除本地依赖缓存。最后,在Terminal中输入`mvn clean install`完成构建。
3640 1
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
685 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
1909 3

热门文章

最新文章

推荐镜像

更多