【maven】4、Maven Guide

来源:互联网 发布:mac office软件下载 编辑:程序博客网 时间:2024/06/10 00:06

本篇主要是对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>
元素 说明 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>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
原创粉丝点击