maven学习
1.环境配置: Mac下配置Java开发环境和Maven环境
2.jar包:strust2,spring,MyBatis
3.目录结构:
src
-main
-java
-package
-test
-java
-package
resource
4.mvn常用构建命令
archetype插件——用于创建符合maven规定的目录骨架
6.maven中的坐标和仓库
(1)坐标
构件
(2)仓库
本地仓库和远程仓库
完整的项目构建过程:清理、编译、测试、打包、集成测试、验证、部署
8.maven的生命周期和插件
clean 清理项目
pre-clean 执行清理前的工作
clean 清理上一次构建生成的所有文件
post-clean 执行清理后的文件
default 构建项目(最核心)
compile
test
package
install
site 生成项目站点
pre-site 在生成站点前要完成的工作
site 生成项目的站点文档
post-site 在生成项目站点后要完成的工作
site-deploy 发布生成的站点到服务器上
9.pom.xml解析
<!-- 控制依赖与三种classpath(编译,测试,运行)的关系 -->
provided 在编译和测试时有效
runtime 在测试和运行时有效
test 只在测试时有效
system 在编译和测试时有效,与本机系统相关联,可移植性差
import 导入的范围,只使用在dependencyManagement中,表示从其它的pom导入dependency的配置
11.maven依赖传递
原则:(1)短路优先:优先解析路径短的
(2)先声明先优先:如果路径长度相同,则谁先声明,先解析谁
13.maven继承和聚合
1.环境配置: Mac下配置Java开发环境和Maven环境
2.jar包:strust2,spring,MyBatis
3.目录结构:
src
-main
-java
-package
-test
-java
-package
resource
4.mvn常用构建命令
mvn -v //查看maven版本
mvn clean //删除target
mvn compile //编译
mvn test //测试
mvn package //打包
mvn install //安装jar包到本地仓库中
mvn clean compile
//创建目录的两种方式
//按照提示进行选择
mvn archetype:generate
//一次创建完成
//mvn archetype:generate -DgroupId=组织名,公司网址的反写+项目名 -DartifactId=项目名-模块名 -Dversion=版本号 -Dpackage=代码所存在的包名
mvn archetype:generate -DgroupId=com.imooc.maven04 -DartifactId=maven04-demo -Dversion=1.0.0SHAPSHOT -Dpackage=com.imooc.maven04.demo
5.自动创建目录骨架
archetype插件——用于创建符合maven规定的目录骨架
6.maven中的坐标和仓库
(1)坐标
构件
(2)仓库
本地仓库和远程仓库
/Users/barley/Downloads/apache-maven-3.5.2/lib/maven-model-builder-3.5.2.jar/org/apache/maven/model/pom-4.0.0.xml
(3)镜像仓库
/Users/barley/Downloads/apache-maven-3.5.2/conf/settings.xml
<mirror>
<id>maven.net.cn</id>
<mirrorOf>central</mirrorOf>
<name>central mirror in china</name>
<url>http://maven.net.cn/content/groups/public</url>
</mirror>
(4)更改仓库位置
<localRepository>/path/to/local/repo</localRepository>
7.在eclipse中安装maven插件以及创建maven项目
完整的项目构建过程:清理、编译、测试、打包、集成测试、验证、部署
8.maven的生命周期和插件
clean 清理项目
pre-clean 执行清理前的工作
clean 清理上一次构建生成的所有文件
post-clean 执行清理后的文件
default 构建项目(最核心)
compile
test
package
install
site 生成项目站点
pre-site 在生成站点前要完成的工作
site 生成项目的站点文档
post-site 在生成项目站点后要完成的工作
site-deploy 发布生成的站点到服务器上
9.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/xsd/maven-4.0.0.xsd">
<!-- 指定了当前pom的版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 指定项目所在位置,groupId的值就是项目的包名 -->
<groupId>反写的公司网址+项目名</groupId>
<groupId>com.imooc.maven01.model</groupId>
<!-- artifactId的值是模块名,这里建议使用项目名 -->
<artifactId>项目名-模块名</artifactId>
<artifactId>maven01-model</artifactId>
<!-- 版本 -->
<!-- 第一个0表示大版本号
第二个0表示分支版本号
第三个0表示小版本号
snapshot快照
alpha内部测试
beta公测
Release稳定
GA发布
-->
<version>0.0.1SNAPSHOT</version>
<!--
打包方式
默认是jar
war zip pom
-->
<packaging></packaging>
<!-- 项目描述名 -->
<name></name>
<!-- 项目地址 -->
<url></url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!-- 项目描述 -->
<description></description>
<!-- 开发人员列表 -->
<developers></developers>
<!-- 许可证 -->
<licenses></licenses>
<!-- 组织 -->
<organization></organization>
<!-- 依赖列表 -->
<dependencies>
<dependency>
<!-- 坐标 -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<type></type>
<!-- 依赖范围 -->
<scope>test</scope>
<!-- 设置依赖是否可选,默认false -->
<optional></optional>
<!-- 排除依赖传递列表 -->
<exclusions>
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- 依赖的管理 -->
<dependencyManagement>
<dependencies>
<dependency></dependency>
</dependencies>
</dependencyManagement>
<build>
<!-- 插件列表 -->
<plugins>
<plugin>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</plugin>
</plugins>
</build>
<!-- 用于在子模块中对父模块的pom的继承 -->
<parent></parent>
<!-- 用来聚合运行多个manage项 -->
<modules>
<module></module>
</modules>
</project>
10.依赖的范围
<!-- 控制依赖与三种classpath(编译,测试,运行)的关系 -->
<scope>test</scope>
compile
默认的范围,编译测试运行都有效
provided 在编译和测试时有效
runtime 在测试和运行时有效
test 只在测试时有效
system 在编译和测试时有效,与本机系统相关联,可移植性差
import 导入的范围,只使用在dependencyManagement中,表示从其它的pom导入dependency的配置
11.maven依赖传递
<dependency>
<groupId>com.hongxing</groupId>
<artifactId>hongxing-nage</artifactId>
<version>0.0.1-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>com.hongxing</groupId>
<artifactId>hongxing-bge</artifactId>
</exclusion>
</exclusions>
</dependency>
12.maven依赖冲突
原则:(1)短路优先:优先解析路径短的
(2)先声明先优先:如果路径长度相同,则谁先声明,先解析谁
13.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.hongxing</groupId>
<artifactId>hongxing-aggreation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 聚合 -->
<packaging>pom</packaging>
<name>hongxing-aggreation</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<modules>
<module>../hongxing-bge</module>
<module>../hongxing-nage</module>
<module>../hongxing-shanji</module>
</modules>
</project>
<!-- 继承 -->
<!-- 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.hongxing</groupId>
<artifactId>hongxing-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>hongxing-parent</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>3.8.1</junit.version>
</properties>
<!-- <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies> -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
<!-- child -->
<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.hongxing</groupId>
<artifactId>hongxing-bge</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>hongxing-bge</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
<groupId>com.hongxing</groupId>
<artifactId>hongxing-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<!-- <version>3.8.1</version>
<scope>test</scope> -->
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
</dependencies>
</project>
14.使用maven构建web项目,引用jetty插件
代码稍后上传到github
思考:mac下如何停止jetty服务