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

来源:互联网 发布:淘宝店装修多少钱 编辑:程序博客网 时间:2024/04/28 06:31

 

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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 4周岁半幼儿便秘怎么办 没胃口不能吃辣怎么办 九个月宝宝缺锌怎么办 宝宝4 5天不吃饭怎么办 16个月宝宝不肯吃饭怎么办 儿童不吃饭很瘦怎么办 小孩吃饭吃的少怎么办 宝宝突然晚上不睡觉怎么办 l岁宝宝吃多了怎么办 3个月婴儿厌食怎么办 11个月婴儿厌食怎么办 7个月的婴儿厌食怎么办 小孩记忆不好读书记不住怎么办 9岁儿童不爱睡觉怎么办 6岁儿童不爱吃饭怎么办 2岁半宝宝不吃饭怎么办 一年级的孩子不爱学习怎么办 小孩不爱写作业怎么办啊 孩子不爱看书怎么办如何教育 2岁宝宝不爱看书怎么办 儿媳妇比儿子年龄大我不喜欢怎么办 不喜欢儿子却生了儿子怎么办 静不下心来看书怎么办 孩子爱玩不爱学怎么办 孩子爱玩不爱学习怎么办 孩子爱玩手机不爱学习怎么办 照四维宝宝太活泼了怎么办 胎宝宝太活泼了怎么办 7个月宝宝太活泼怎么办 我是个初中生不想上学怎么办 3岁宝宝不肯说话怎么办 两周宝宝不爱吃饭怎么办 小孩不喜欢吃水果蔬菜怎么办 孩子对学习不感兴趣怎么办 幼儿园老师不喜欢我孩子怎么办 孩子数学不主动思考问题怎么办 孩子做事慢磨蹭家长应该怎么办 孩子不写作业怎么办啊 对孩子在校被欺怎么办 二年级的孩子不爱学习怎么办 孩子不爱学习怎么办二年级