Maven是apache下的一个纯java开发的开源项目 只是用于管理java项目的
优点
依赖管理 对jar包的统一管理
一键构建项目 编译 测试 打包 部署
可以跨平台
应用于大型项目 可以提高开发效率
Maven的核心配置文件 在安装目录下的conf\settings.xml
Maven环境变量的配置
maven3.3.x所需要的jdk都是需要1.7以上的版本的
Path %MAVEN_HOME%\bin
Maven的仓库分为本地仓库 远程仓库 中央仓库
本地仓库由开发者自己维护
远程仓库由公司或组织进行维护
中央仓库由apache团队维护
项目中需要包时 先从本地仓库中找 本地仓库若没有 则从远程仓库中找 实在不行从中央仓库中进行获取
Maven本地仓库的配置 只需要修改conf/settings.xml即可
Maven的常用命令
查看版本 mvn -v
部署项目(一键启动) 在项目目录下 mvn tomcat:run
清理项目编译好的class文件 mvn clean
编译生成target文件夹 mvn compile 只编译主目录的文件
编译测试文件 mvn test 只编译test目录的文件
打包 mvn package 打包文件的名称取决于项目中的pom.xml
将项目发布到本地仓库 mvn install 对于web项目没有什么作用
将本地仓库的jar包发布到远程仓库中 mvn deploy
生成项目的站点文档(静态页面) mvn site
Maven项目开发的目录结构
对于依赖的作用范围(scope)
compile(默认) 编译时需要 测试时需要 运行时需要 打包时需要
provided 编译时需要 测试时也需要 运行时不需要 打包时不需要
runtime 编译时不需要 测试时需要 运行时需要
test 编译时不需要 测试时需要 运行时不需要
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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 项目的坐标GAV -->
<groupId>cn.a2490</groupId>
<artifactId>maven-ssh</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 打包方式jar war pom -->
<packaging>war</packaging>
<!-- 可以省略 -->
<name></name>
<!-- 可以省略 -->
<description></description>
<properties>
<!-- 自定义标签
标签的引用方式为 ${spring.version}
例如<version>${spring.version}</version>
-->
<spring.version>4.2.4.RELEASE</spring.version>
</properties>
<!-- 插件 -->
<build>
<plugins>
<plugin>
<!-- 插件的坐标 -->
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<!-- 插件的配置 -->
<configuration></configuration>
</plugin>
</plugins>
</build>
<!-- 依赖 -->
<dependencies>
<dependency>
<!-- 依赖的坐标 -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<!-- 依赖的作用范围 -->
<scope>test</scope>
</dependency>
</dependencies>
</project>
需要注意的是 maven3.3.x所需要的jdk都是需要1.7以上的版本的 故需要修改编译版本
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
添加依赖(网址搜索)
依赖版本冲突
调节原则
路径近者优先原则 对有冲突的包进行依赖添加 指定其版本
第一声明者优先原则 将想用的版本的依赖放在前面即可
排除原则
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.24</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
版本锁定
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
远程仓库配置 使用nexus 下载解压nexus
安装nexus.bat install
启动nexus.bat start
启动失败的解决方法 将bin/jsw/conf/wrapper.conf文件中的第15行修改为java.exe的所在
例如 wrapper.java.command=C:\Program Files (x86)\Java\jdk1.8.0_73\bin\java.exe 以自己的路径为准
访问的路径默认为 http://localhost:8081/nexus
登录nexus
用户名/密码 为 admin/admin123
关闭nexus.bat stop
添加到pom.xml中 配置私服地址
<distributionManagement>
<repository>
<id>releases</id>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
在maven安装地址\conf\setting.xml中配置登录私服的账号密码
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
配置下载的地址
<profile>
<id>dev</id>
<repositories>
<repository>
<!--仓库id id不能重复-->
<id>nexus</id>
<!--仓库地址-->
<url>http://localhost:8081/nexus/content/groups/public/</url>
<!--是否下载releases构件-->
<releases>
<enabled>true</enabled>
</releases>
<!--是否下载snapshots构件-->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件仓库 -->
<pluginRepository>
<!-- 插件仓库的id不能重复 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
激活下载地址
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>