1.下载maven安装包
2.解压后配置环境变量M2_HOME
3.配置执行环境,配置path路径
4.mvn -v 检测maven的安装版本
5.pom.xml
<?xml version="1.0" encoding="utf-8"?>
<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.zsj.maven</groupId>
<artifactId>maven-ch01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependencies>
</project>
6.目录结构
src/main/java
src/main/resources
src/main/test
7.mvn compile 【执行命令的时候会自动下载依赖的插件】
mvn test
mvn clean 删除源文件
mvn package
mvn install 将项目打包安装
8.一个项目引用另一个项目
<?xml version="1.0" encoding="utf-8"?>
<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.zsj.maven</groupId>
<artifactId>maven-ch02</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<groupId>com.zsj.maven</groupId>
<artifactId>maven-ch01</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependencies>
</project>
9.本地默认仓库目录:C:\Documents and Settings\Administrator\.m2\repository
10.配置仓库目录[E:\apache-maven-3.0.4\conf]
配置localRepository,并将settings.xml拷贝到自己新建的本地仓库下
Default: ~/.m2/repository
<localRepository>D:/repos/repository</localRepository>
将原来配置目录下的settings.xml的localRepository同步改
拷贝的配置文件在D:/repos目录下
11.配置中央工厂
默认配置是在maven-model-builder-3.0.4.jar中的pom-4.0.0.xml中
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>http://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
12.利用maven骨架生成项目
生成方式一:mvn archetype:generate
生成方式二:mvn archetype:generate -DgroupId=com.zsj.maven -DartifactId=maven-ch03
-Dversion=0.0.1-SNAPSHOT
13.配置Eclipse中的maven
下载安装m2eclipse
windows--preference--maven--installation
windows--preference--maven--user setting
14.maven隐式变量【Maven提供了三个隐式的变量可以用来访问环境变量,POM信息,和Maven Settings】
1.env
env变量,暴露了你操作系统或者shell的环境变量。便 如在Maven POM中一个对${env.PATH}的引用将会被${PATH}环境变量替换,在Windows中为%PATH%.
2.projetc
project变量暴露了POM。可以使用点标记(.)的路径来引用POM元素的值。例如
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>project-a</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<finalName>${project.groupId}-${project.artifactId}</finalName>
</build>
</project>
当你使用mvn help:effective-pom 查看时,你会看到<finalName>org.sonatype.mavenbook-project-a</finalName>
${basedir} 项目根目录
${project.build.directory} 构建目录,缺省为target
${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
${project.packaging} 打包类型,缺省为jar
${project.xxx} 当前pom文件的任意节点的内容
15.maven Scope
在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:
* compile,缺省值,适用于所有阶段,会随着项目一起发布。
* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。不会发生传递依赖
* system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
16.依赖
16.1 A依赖xx1.jar,B依赖于xx2.jar ,A,B依赖相同的jar
如果C依赖于A,B,那么C依赖的jar将跟随先依赖的模块
16.2 依赖级别相同的时候,选择路径最短的
17.排除依赖包
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.1</version>
<exclusions>
<exclusion>
<groupId>com.xxx</groupId>
<artifactId>xxx</artifactId>
</exclusion>
</exclusions>
</dependency>
18.聚合多个项目
在eclipse中创建一个简单的maven项目,跳过固有的结构模式
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zsj.user</groupId>
<artifactId>user-aggregation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>../user-core</module>
<module>../user-log</module>
<module>../user-service</module>
</modules>
</project>
19.继承
在引用模块的配置
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>xxx</groupId>
<artifactId>ddd</artifactId>
<version>ssss</version>
<relativePath>../user-parent/pom.xml</relativePath>
</parent>
依赖继承,在父模块中配置,此时子模块中就不需要填写依赖包的版本信息
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zsj.user</groupId>
<artifactId>user-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencyManagement>
<dependencies>
<dependency>
****
</dependency>
</dependencies>
</dependencyManagement>
</project>
继承和聚合可以合在一起
本文出自 “逆天” 博客,转载请与作者联系!