Apache Maven基础

 

1.http://maven.apache.org/
     1.下载apache-maven-3.1.1-bin.zip,解压至C盘根目录
     2.添加环境变量至path:C:\apache-maven-3.1.1\bin
     3.cmd命令下输入:mvn -version/mvn-v
        Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 23:22:2
2+0800)
        Maven home: C:\apache-maven-3.1.1\bin\..
        Java version: 1.7.0_51, vendor: Oracle Corporation
        Java home: C:\Program Files\Java\jdk1.7.0_51\jre
        Default locale: zh_CN, platform encoding: GBK
        OS name: "windows xp", version: "5.1", arch: "x86", family: "windows"

2.mvn -help
 usage: mvn [options] [<goal(s)>] [<phase(s)>]

 Options:
  -am,--also-make                        If project list is specified, also
      build projects required by the
      list
  -amd,--also-make-dependents            If project list is specified, also
      build projects that depend on
      projects on the list
  -B,--batch-mode                        Run in non-interactive (batch)
      mode
  -C,--strict-checksums                  Fail the build if checksums don't
      match
  -c,--lax-checksums                     Warn if checksums don't match
  -cpu,--check-plugin-updates            Ineffective, only kept for
      backward compatibility
  -D,--define <arg>                      Define a system property
  -e,--errors                            Produce execution error messages
  -emp,--encrypt-master-password <arg>   Encrypt master security password
  -ep,--encrypt-password <arg>           Encrypt server password
  -f,--file <arg>                        Force the use of an alternate POM
      file (or directory with pom.xml).
  -fae,--fail-at-end                     Only fail the build afterwards;
      allow all non-impacted builds to
      continue
  -ff,--fail-fast                        Stop at first failure in
      reactorized builds
  -fn,--fail-never                       NEVER fail the build, regardless
      of project result
  -gs,--global-settings <arg>            Alternate path for the global
      settings file
  -h,--help                              Display help information
  -l,--log-file <arg>                    Log file to where all build output
      will go.
  -llr,--legacy-local-repository         Use Maven 2 Legacy Local
      Repository behaviour, ie no use of
      _remote.repositories. Can also be
      activated by using
      -Dmaven.legacyLocalRepo=true
  -N,--non-recursive                     Do not recurse into sub-projects
  -npr,--no-plugin-registry              Ineffective, only kept for
      backward compatibility
  -npu,--no-plugin-updates               Ineffective, only kept for
      backward compatibility
  -nsu,--no-snapshot-updates             Suppress SNAPSHOT updates
  -o,--offline                           Work offline
  -P,--activate-profiles <arg>           Comma-delimited list of profiles
      to activate
  -pl,--projects <arg>                   Comma-delimited list of specified
      reactor projects to build instead
      of all projects. A project can be
      specified by [groupId]:artifactId
      or by its relative path.
  -q,--quiet                             Quiet output - only show errors
  -rf,--resume-from <arg>                Resume reactor from specified
      project
  -s,--settings <arg>                    Alternate path for the user
      settings file
  -T,--threads <arg>                     Thread count, for instance 2.0C
      where C is core multiplied
  -t,--toolchains <arg>                  Alternate path for the user
      toolchains file
  -U,--update-snapshots                  Forces a check for updated
      releases and snapshots on remote
      repositories
  -up,--update-plugins                   Ineffective, only kept for
      backward compatibility
  -V,--show-version                      Display version information
      WITHOUT stopping build
  -v,--version                           Display version information
  -X,--debug                             Produce execution debug output

3.maven项目结构
     ${basedir} 存放 pom.xml(Project Object Model)和所有的子目录
     ${basedir}/src/main/java 项目的 java源代码
     ${basedir}/src/main/resources 项目的资源,比如说 property文件
     ${basedir}/src/test/java 项目的测试类,比如说 JUnit代码
     ${basedir}/src/test/resources 测试使用的资源

     编译后 的 classes 会放在 ${basedir}/target/classes 下面, JAR会放在 ${basedir}/target
    -->
惯例优于配置

4.Maven仓库
     1.仓库分类:本地仓库和远程仓库。Maven根据坐标寻找构件的时候,它先会查看本地仓库,如果本地仓库存在构件,则直接使用;如果没有,则从远程仓库查找,找到后,下载到本地
     2.默认情况下,每个用户在自己的用户目录下都有一个路径名为.m2/repository/的仓库目录。可以自定义本地仓库的地址.修改路径时,先将$M2_HOME/conf/settings.xml文件复制到~/.m2/settings.xml,再对后者进行编辑,设置localRepository元素的值为想要的仓库地址
     3.远程中央仓库的地址为 http://repo1.maven.org/
     4.私服/镜像
     5.settings.xml

5.POM
     1.Maven坐标
          1.groupId:组织标识.如com.landon,在m2_repository目录下:com/landon
          2.artifactId:项目名称,如mavs,在m2_repository目录下:com/landon/mavs
          3.version:版本号,如1.0.0,在m2_repository目录下:com/landon/mavs/1.0.0
          4.packaging:打包的格式,如jar,war

     2.依赖关系dependencies(项目中依赖的jar)
          dependency属性
          1.groupId/artifactId/version 依赖的具体工程
          2.scope 依赖范围 compile/test/runtime/provided/system
          3.optional 去除依赖传递
          4.exclusions 排除依赖

     3.聚合关系
          1.通过一个父模块将所有的要构建模块整合起来,将父模块的打包类型声明为 POM,通过 <modules> 将各模块集中到父 POM.<module></module> 中间的内容为子模块工程名的相对路径.
          2.Maven 会首先解析聚合模块的 POM 文件,分析要构建的模块,并通过各模块的依赖关系计算出模块的执行顺序,根据这个潜在的关系依次构建模块。将各子模块聚合到父模块中后,我们就可以对父模块进行一次构建命令来完成全部模块的构建

     4.继承关系
          1.通过构建父模块将子模块共用的依赖,插件等进行统一声明
          2.parent

     5.插件
          1.Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven-compiler-plugin完成的
          2.每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标,例如maven-compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码,testCompile目标用来编译位于src/test/java/目录下的测试源码
          3.maven-antrun-plugin能让用户在Maven项目中运行Ant任务
          4.plugins/plugin

     6.构建
          1.build
          2.结合plugins/resources
          3.profile(多环境构建)

6.maven属性(和ant差不多)
     1.内置属性。这种属性跟 Maven Project 自身有关,比如要引入当前 Project 的版本信 息,那么只需要在使用的位置引用 ${version} 就行了。 
     2.Setting 属性。上文中已经提到 Maven 自身有一个 settings.xml 配置文件,它里面含有包括仓库,代理服务器等一些配置信息,利用 ${settings.somename} 就可以得到文件里相应元素的值。 
     3.POM 属性。这种属性对应 POM 文件中对应元素的值,例如 ${project.groupId} 对应了 <groupId></groupId> 中的值,${project.artifactId} 对应了 <artifactId> </ artifactId > 中的值。
     4.系统环境变量。可以使用 env.${name} 来获得相应 name 对应的环境变量的值,例如 ${env.JAVA_HOME} 得到的就是 JAVA_HOME 的环境变量值。 
     5.用户自定义变量。这种类型的变量是使用最频繁和广泛的变量,完全由用户自己定义。在 POM 文件中加入 <properties> 元素并将自定义属性作为其子元素

7.查找依赖jar
     http://search.maven.org/
     你懂得

8.参考:
 1.http://maven.apache.org/settings.html
 2.http://maven.apache.org/pom.html
 3.http://maven.apache.org/guides/index.html

posted @ 2014-02-07 09:48  chenchangyan  阅读(263)  评论(0编辑  收藏  举报