【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.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>my-app</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
元素说明
projectpom.xml文件顶级元素
modelVersionPOM版本,一般不怎么改动
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>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </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添加<build>。以下是添加maven-compiler-plugin插件。

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.3</version>
      <configuration>
        <source>1.5</source>
        <target>1.5</target>
      </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 <plug-in>: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=<groupId> -DartifactId=<artifactId> -Dversion=1.0.0 -Dpackaging=jar -Dfile=<myfile.jar>

SHAPSHOT version
<project xmlns="http://maven.apache.org/POM/4.0.0"
  ...
  <groupId>...</groupId>
  <artifactId>my-app</artifactId>
  ...
  <version>1.0-SNAPSHOT</version>
  <name>Maven Quick Start Archetype</name>
  ...

项目版本可以分为开发版本和稳定版本,开发版本使用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包,这将在下一章介绍。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值