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
- <project name="my-project" default="dist" basedir=".">
- <description>
- simple example build file
- </description>
- <!-- set global properties for this build -->
- <property name="src" location="src/main/java"/>
- <property name="build" location="target/classes"/>
- <property name="dist" location="target"/>
- <target name="init">
- <!-- Create the time stamp -->
- <tstamp/>
- <!-- Create the build directory structure used by compile -->
- <mkdir dir="${build}"/>
- </target>
- <target name="compile" depends="init"
- description="compile the source " >
- <!-- Compile the java code from ${src} into ${build} -->
- <javac srcdir="${src}" destdir="${build}"/>
- </target>
- <target name="dist" depends="compile"
- description="generate the distribution" >
- <!-- Create the distribution directory -->
- <mkdir dir="${dist}/lib"/>
- <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
- <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
- </target>
- <target name="clean"
- description="clean up" >
- <!-- Delete the ${build} and ${dist} directory trees -->
- <delete dir="${build}"/>
- <delete dir="${dist}"/>
- </target>
- </project>
Maven pom.xml
- <project>
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.sonatype.mavenbook</groupId>
- <artifactId>my-project</artifactId>
- <version>1.0</version>
- </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
- Maven学习笔记(1) 了解什么是Maven
- Maven学习笔记(一)什么是Maven?
- maven笔记-1-初步了解
- Maven学习笔记1
- Maven学习笔记(1)
- maven学习笔记(1)
- maven学习笔记1
- maven学习笔记1
- maven学习笔记1
- MAVEN学习笔记1
- Maven学习笔记(1) ---- 初探Maven
- Maven学习记录1——什么是 Maven
- Maven学习系列--03进一步了解Maven
- maven入门学习笔记1
- Maven学习笔记1-QuickStart
- Maven实战学习笔记1
- maven学习笔记1--简介
- 了解maven
- 21句
- flex一个托盘加透明背景和不规则窗口的整理示例
- word不能另存为也不能保存 在卸载ramdisk之后
- 无语啊
- 敏捷开发环境
- Maven学习笔记(1) 了解什么是Maven
- 阅读下面代码,程序列举了3种二维数组作为参数传递的方法:[转载]
- pdf文件如何转换为word文件 [转载]
- 第一次使用 ubuntu感觉很好
- 悼念袁可嘉
- 你也许不知道的#define用法 [转载]
- WinCE下驱动开发入门记录 [转载]
- Linux USB驱动框架分析(一)(转)
- C++中字符串与整型浮点型间的转换(转载)