maven下载路径:http://maven.apache.org/download.cgi
maven环境变量配置:我的电脑——》属性——》高级环境配置——》环境变量
系统变量 M2_HOME:maven的bin父目录,path中配置%M2_HOME%\bin,在命令行敲mvn -v查看maven版本,也顺便看下环境配置是否成功。
maven常用命令:clean,package,test,install,compile
mvn compile编译项目
mvn test 测试项目
mvn package 项目打包 打的包在target目录下
mvn clean 删除target目录
mvn install 打包编译jar到本地仓库
mvn archetype:generate 创建骨架目录
maven 骨架目录说明
src/main/java/主代码
src/test/java测试目录
根目录有个pom.xml用于项目管理依赖与构建
maven仓库与坐标
更改仓库位置:在某个盘下创建一repo文件,修改setting.xml文件的仓库位置为X:\repo并把setting.xml放repo文件下,修改myeclipse的maven use setting的X:\setting.xml。
Maven的坐标为各种构件引入了秩序,任何一个构件都必须明确的定义自己的坐标,maven的坐标包括如下的元素:
groupId: 定义当前Maven项目隶属的实际项目(反写公司网址+项目名)
artifactId: 该元素定义实际项目中的一个Maven项目或模块(项目名+模块名)
version: 该元素定义Maven项目当前所处的版本
packaging: 该元素定义Maven项目的打包方式
maven 依赖传递性
A->B->C C会同时依赖AB,现在如果C只想依赖B,不想依赖A
exclusions:排除依赖
<dependency>
<groupId>com.huahua</groupId>
<artifactId>huahua-B</artifactId>
<version>0.0.1-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>com.huahua</groupId>
<artifactId>huahua-A</artifactId>
</exclusion>
</exclusions>
</dependency>
聚合
创建另一个maven项目C,这样A,B项目可以同时编译打包,而不需要一个一个的去打包,不过C 项目的package设置成pom,这个pom.xml可以看成是一个总的pom.xml,代码如下
<modules>
<module>../huahua-A</module>
<module>../huahua-B</module>
</modules>
继承
每个maven项目引用了同一个包时,我们就可以抽象出一个pom.xml的项目
<properties>
<junit.version>3.8.1</junit.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
其他子maven项目pom.xml就可以如下定义依赖包:
<parent>
<groupId>com.huahua</groupId>
<artifactId>huahua-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
这样换版本的时候就不用一个一个去修改了,只要修改总的pom.xml文件就行了
maven创建一个web项目
只要在pom.xml文件中加入jetty或是tomcat插件再加上servlet的包就可以访问一个web项目了
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>maven01-model1</finalName>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.16.v20140903</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
executions 在打包的时候运行jetty插件 (在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。)
在创建maven项目时,特别要注意查看setting.xml,pom.xml文件是否正确,setting.xml错误会导致创建不了maven项目包缺陷包的错误。pom.xml文件错误会导致项目没法通过编译。