原来项目的痛点(流程化控制问题)
- 软件的测试,文档生成,打包,发布——最好自动化(一键发布)
- 项目依赖大量第三方的jar包, 依赖关系复杂,不好管理——pom.xml
- jar 是不同的厂商,下载源太多——仓库
- 模块依赖
概述
- Maven is a software project management and comprehension tool
- 软件工程管理工具
- maven官网
安装+配置
- 下载
- 解压刚下载的压缩包
- 配置环境变量
构架项目——Hello为例
- 约定重于配置——有其特有的目录结构
1.默认配置
- 手动创建目录结构
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>
<!-- 坐标 : 此项目在仓库中的位置 -->
<groupId>com.yc.test</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
</project>
- 测试
2.测试各种goal
- 不同的命令会自动下载不同的插件,maven是以插件形式运行起来的
- mvn clean:清空输出目录,即删除target目录
- mvn compile:编译,即生成target目录
- mvn test:测试
- mvn package:打包成jar文件,放在target目录下
- mvn install:将jar包复制一份到本地仓库中
- mvn deploy:将jar装到私服
- mvn build
3.将仓库从用户目录改成自定义目录
- 效果
- 配置
本地仓库下载地址 提取码:tjim
setting.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 本地仓库位置-->
<localRepository>D:\MavenRepository</localRepository>
<pluginGroups>
</pluginGroups>
<proxies>
<!-- 代理服务器配置 :
默认情况,我们使用 apache提供的maven仓库 (中央仓库), 但这个仓库有时候不稳定,
可以在这里多配置几个代理服务器当中央仓库不行时,从代理服务器下载. -->
</proxies>
<!-- 配置 仓库所在的服务器( 私服 nexus )登录用户名和密码 -->
<servers>
<!--
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
-->
</servers>
<!-- 配置私服的地址,这样就不用到公服下载jar包,而是在私服下,私服没有,由私服到公服下载. -->
<mirrors>
</mirrors>
<profiles>
<profile>
<id>dev</id>
<repositories>
<repository>
<id>aliyun</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>central</id>
<url>http://central.maven.org/maven2/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>clojars</id>
<name>clojars</name>
<url>http://clojars.org/repo/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>redhat</id>
<name>redhat</name>
<url>https://maven.repository.redhat.com/ga/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>aliyun</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>central</id>
<url>http://central.maven.org/maven2/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>clojars</id>
<name>clojars</name>
<url>http://clojars.org/repo/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<!-- 配置 maven使用的jdk版本,因为如果不配置,自动采用 jdk1.4, 就样插件就会下载 基于jdk1.4的插件,运行报错 -->
<id>jdk1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>dev</activeProfile>
<activeProfile>jdk1.8</activeProfile>
</activeProfiles>
</settings>
术语
1.仓库
- 中央仓库
- 私服:镜像仓库(自己搭建)——nexus
- 本地仓库
2.配置文件的级别
- 最高:只对当前项目起作用,例项目中的pom.xml
- 中级:只对当前用户起作用,例${user.home}/.m2/settings.xml
- 低级:对使用当前maven的项目起作用,例maven的安装包下conf/settings.xml
3.settings.xml配置
- localRepository: 本地仓库的位置
- mirror
- repository
- 代理
- jdk版本
4.maven常用的goal
- 不同的命令会自动下载不同的插件,maven是以插件形式运行起来的
- mvn clean:清空输出目录,即删除target目录
- mvn compile:编译,即生成target目录
- mvn test:测试
- mvn package:打包成jar文件,放在target目录下
- mvn install:将jar包复制一份到本地仓库中
- mvn deploy:将jar装到私服
- mvn build
5.生命周期
- Clean Lifecycle 在进行真正的构建之前进行一些清理工作
pre-clean:执行一些需要在clean之前完成的工作
clean:移除所有上一次构建生成的文件
post-clean:执行一些需要在clean之后立刻完成的工作
- Default Lifecycle 构建的核心部分,编译,测试,打包,部署等
- Site Lifecycle 生成项目报告,站点,发布站点
6.依赖范围
结合IDEA使用
1.修改配置
2.创建Maven项目
3.发布到target目录
4.引入junit依赖