【maven】4、Maven Guide

本篇主要是对Maven项目结构介绍、POM文件常用内容介绍及日常开发中使用的技术点。
本文参考Maven官网Maven Getting Started Guide
http://maven.apache.org/guides/getting-started/index.html#What_is_a_SNAPSHOT_version

上一章,我们尝试了Maven命令创建项目、打Jar包、执行Jar包。首先我们先在看看pom.xml文件中使用到的元素含义。

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0modelVersion>
  <groupId>com.mycompany.appgroupId>
  <artifactId>my-appartifactId>
  <packaging>jarpackaging>
  <version>1.0-SNAPSHOTversion>
  <name>my-appname>
  <url>http://maven.apache.orgurl>
  <dependencies>
    <dependency>
      <groupId>junitgroupId>
      <artifactId>junitartifactId>
      <version>3.8.1version>
      <scope>testscope>
    dependency>
  dependencies>
project>
元素 说明
project pom.xml文件顶级元素
modelVersion POM版本,一般不怎么改动
groupId 项目组织名称,公司名称.如com.mycompany.app
artifactld 项目名称,唯一。一般打包时作为包名前缀
packaging 项目构件类型,如JAR、WAR、EAR、POM等。默认值为jar
version 项目版本,在打包时快照名称为${artifactld}-${version}.jar 格式为:主版本.次版本.增量版本-限定版本号
name 项目显示名称,被用于Maven生成的文档
url 项目主页URL,被用于Maven生成的文档
description 项目基本描述,被用于Maven生成的文档
dependencies 使用第三方依赖包

重点介绍一下使用第三方依赖包,在日常的项目开发中我们用到很多第三方jar包,在Ant我们需要自己讲jar包下载拷贝到项目中,容易产生jar冲突,版本不一致等问题,不便于管理。现在有Maven,会自动下载所需要的依赖包,依赖包之间版本管理。

    <dependency>
      <groupId>junitgroupId>
      <artifactId>junitartifactId>
      <version>3.8.1version>
      <scope>testscope>
    dependency>

可以在http://mvnrepository.com/中查询所需要的jar包,将依赖包信息复制到dependencies中。

Maven是如何下载依赖包?

我们在pom.xml中配置了dependency,那么Maven是如何下载这些依赖包?
在我们安装Maven时,要在默认路径${user.home}/.m2配置settings.xml(settings.xml具体配置及元素后面会有介绍),默认下载路径为
或者可以自己配置,现在国内比较好用的是阿里云
http://maven.aliyun.com/nexus/content/groups/public
下载的依赖包存放在${user.home}/.m2/repository

Maven plugins

Maven本质上是一个插件框架,它的核心并不是执行任何具体的构建任务,所有的这些任务都是交给插件来完成,例如编译源代码是由maven-compiler-plugin完成的。进一步说,每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标,例如maven-compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码,testCompile目标用来编译位于src/test/java/目录下的测试源码。

用户可以通过两种方式调用Maven插件目标。第一种方式是将插件目标与生命周期阶段(lifecycle phase)绑定,这样用户在命令行只是输入生命周期阶段而已,例如Maven默认将maven-compiler-plugin的compile目标与 compile生命周期阶段绑定,因此命令mvn compile实际上是先定位到compile这一生命周期阶段,然后再根据绑定关系调用maven-compiler-plugin的compile目标。第二种方式是直接在命令行指定要执行的插件目标,例如mvn archetype:generate 就表示调用maven-archetype-plugin的generate目标,这种带冒号的调用方式与生命周期无关。
所有Maven提供很多插件已供大家使用,添加插件的方法是在pom.xml添加。以下是添加maven-compiler-plugin插件。

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.pluginsgroupId>
      <artifactId>maven-compiler-pluginartifactId>
      <version>3.3version>
      <configuration>
        <source>1.5source>
        <target>1.5target>
      configuration>
    plugin>
  plugins>
build>

介绍到这里,项目可以引入需要的第三方依赖包、插件等。再介绍常用的Maven命令来满足项目编译、测试编译、打包等。

命令 作用
mvn compile 编译,编译生成的文件在${basedir}/target/classes
mvn test 编译,编译生成的文件在${basedir}/target/test-classes
mvn test-compile 编译测试程序
mvn package 打包,生成的文件在${basedir}/target
mvn install 安装当前工程的输出文件到本地仓库
mvn clean 清空编译产生文件${basedir}/target
mvn site 生成站点目录
mvn site-deploy 生成站点目录并发布
mvn help:effective-pom 查看实际pom信息
mvn dependency:analyze 或 mvn dependency:tree 分析项目的依赖信息
mvn -Dmaven.test.skip=true XXX 跳过测试运行maven任务
mvn help:help 查看帮助信息
mvn :help 查看插件的帮助信息,如:mvn dependency:help 或 mvn ant:help
mvn eclipse:eclipse 当IDE使用Eclipse 生成eclipse项目文件
mvn idea:idea 当IDE使用Intellj Idea 生成Idea项目文件

还有一些整合命令
创建一个简单的Java工程

mvn archetype:create -DgroupId=com.mycompany.example -DartifactId=Example

创建一个java的web工程

mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=com.mycompany.app -DartifactId=my-webapp

安装指定文件到本地仓库

mvn install:install-file -DgroupId= -DartifactId= -Dversion=1.0.0 -Dpackaging=jar -Dfile=

SHAPSHOT version

"http://maven.apache.org/POM/4.0.0"
  ...
  ...
  my-app
  ...
  1.0-SNAPSHOT
  Maven Quick Start Archetype
  ...

项目版本可以分为开发版本和稳定版本,开发版本使用SNAPSHOT,稳定版本使用release表示。
SNAPSHOT版本格式:x.y-SNAPSHOT 。当前版本为1.0-SNAPSHOT,按照Maven规则x.(y+1)-SNAPSHOT,版本升级后为1.1-SNAPSHOT。
现有SNAPSHOT版本后又release版本。

创建Document

mvn archetype:generate \
  -DarchetypeGroupId=org.apache.maven.archetypes \
  -DarchetypeArtifactId=maven-archetype-site \
  -DgroupId=com.mycompany.app \
  -DartifactId=my-app-site

本篇主要介绍了Maven pom.xml文件基本结构使用、如何引入第三方依赖、如何加入插件、一些常用命令、如何创建项目文档,旨在快速用Maven完成日常的开发。

日常开发中项目服务器部署环境不一样需要出不同的包,这时就要考虑如何不改变代码情况下生成不同生产环境所需的war包,这将在下一章介绍。

你可能感兴趣的:(maven)