Maven学习笔记(1) 了解什么是Maven

 

1) 我在了解Maven的过程中,发现它不单是一个好像Ant的构建工具,它更像是一个项目管理工具,因它还可以生成报告、Web站点及物具有生命周期等等

 

2) Maven是建立在约定优于配置的概念上,例如:在没有自定义的情况下,源代码假定是${basedir}/src/main/java,资源文件假定是在 ${basedir}/src/main/resources 。测试代码假定是在 ${basedir}/src/test等,即不用像Ant构建时要自定义这些目录过径一样。当然如果你不想遵从这些默的约定,它亦是容许我们修改的

 

3) Maven 的核心其实不做什么实际的事情,除了解析一些 XML 文档,管理生命周期与插件之外,它什么也不懂。Maven 被设计成将主要的职责委派给一组 Maven 插件,如Surefire插件是负责单元测试,Complier插件是负责编译

 

我们从以下的例子中可以看出,Maven要写的的XML文檔比Ant要简短得多

 

Ant  build.xml

  1. <project name="my-project" default="dist" basedir=".">
  2.     <description>
  3.         simple example build file
  4.     </description>
  5.   <!-- set global properties for this build -->
  6.   <property name="src" location="src/main/java"/>
  7.   <property name="build" location="target/classes"/>
  8.   <property name="dist"  location="target"/>
  9.   <target name="init">
  10.     <!-- Create the time stamp -->
  11.     <tstamp/>
  12.     <!-- Create the build directory structure used by compile -->
  13.     <mkdir dir="${build}"/>
  14.   </target>
  15.   <target name="compile" depends="init"
  16.         description="compile the source " >
  17.     <!-- Compile the java code from ${src} into ${build} -->
  18.     <javac srcdir="${src}" destdir="${build}"/>
  19.   </target>
  20.   <target name="dist" depends="compile"
  21.         description="generate the distribution" >
  22.     <!-- Create the distribution directory -->
  23.     <mkdir dir="${dist}/lib"/>
  24.     <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
  25.     <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
  26.   </target>
  27.   <target name="clean"
  28.         description="clean up" >
  29.     <!-- Delete the ${build} and ${dist} directory trees -->
  30.     <delete dir="${build}"/>
  31.     <delete dir="${dist}"/>
  32.   </target>
  33. </project>
  34.  

 

Maven pom.xml

  1. <project>
  2.   <modelVersion>4.0.0</modelVersion>
  3.   <groupId>org.sonatype.mavenbook</groupId>
  4.   <artifactId>my-project</artifactId>
  5.   <version>1.0</version>
  6. </project>

该上例中 Ant Maven 的区别是:

Apache Ant

·         Ant 没有正式的约定如一个一般项目的目录结构,你必须明确的告诉 Ant 哪里去找源代码,哪里放置输出。随着时间的推移,非正式的约定出现了,但是它们还没有在产品中模式化。

·         Ant 是程序化的,你必须明确的告诉 Ant 做什么,什么时候做。你必须告诉它去编译,然后复制,然后压缩。

·         Ant 没有生命周期,你必须定义目标和目标之间的依赖。你必须手工为每个目标附上一个任务序列。

Apache Maven

·         Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里。它把字节码放到 target/classes ,然后在 target 生成一个 JAR 文件。

·         Maven 是声明式的。你需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。Maven 会帮你处理其它的事情。

·         Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。

 

参考资料:http://www.sonatype.com/book/reference_zh/public-book.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值