maven-5/10
maven
安装路径:
http://maven.apache.org/downloa/d.cgi
文件内容:
bin:含有mvn运行的脚本boot:含有plexus-classworlds类加载器框架lib:含有Maven运行时所需要的java类库conf:含有settings.xml配置文件settings.xml 中默认的用户库: ${user.home}/.m2/repository[通过maven下载的jar包都会存储到此仓库中]
配置环境变量
maven环境变量配置,配置方式跟jdk有些类似。
新建环境变量MAVEN_HOME(值为maven的根目录)、然后在PATH环境变量里加入%MAVEN_HOME%\bin;即可。
输入mvn –v进行查看
仓库配置
本地仓库:就是Maven在本机存储构件的地方。maven的本地仓库,在安装maven后并不会创建,它是在第一次执行maven命令的时候才被创建。maven本地仓库的默认位置:在用户的目录下都只有一个.m2/repository/的仓库目录;可以修改
D:/repository/maven
中央仓库:包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。开源的Java项目依赖的构件都可以在这里下载到。
中央仓库的地址:https://repo1.maven.org/maven2/
私服:是一种特殊的远程仓库,它是架设在局域网内的仓库
阿里云镜像配置
<mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>
生命周期
clean 清理
validate
install 打包
site 站点
clean: 主要目的是清理项目(第一生命周期)pre-clean: 执行一些清理前需要完成的工作clean: 清理上一次构建生成的文件post-clean: 执行一些清理后需要完成的工作 default:定义了真正构建时所需要执行的所有步骤,它是生命周期中最核心的部分 validate initialize generate-sourcesprocess-sources: 处理项目主资源文件。一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中 generate-resources process-resourcescompile: 编译项目的主源码。一般来说,是编译src/main/java目录下的Java文件至项目输出的主classpath目录中target process-classes generate-test-sourcesprocess-test-sources: 处理项目测试资源文件。一般来说,是对src/test/resources目录的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中 generate-test-resources process-test-resourcestest-compile: 编译项目的测试代码,一般来说,是编译src/test/java目录下的Java文件至项目输出的测试classpath目录中 process-test-classes@Testtest: 使用单元测试框架运行测试,测试代码不会打包或部署 prepare-packagepackage: 接受编译好的代码,打包成可发布的格式,如JAR pre-integration-test integration-test post-integration-test verifyinstall: 将包安装到Maven本地仓库,供本地其他Maven项目使用deploy: 将最终的包复制到远程仓库(私服),供其他开发人员和Maven项目使用 site生命周期: 建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成站点pre-site: 执行一些在生成项目站点之前需要完成的工作site: 生成项目站点文档post-site: 执行一些在生成项目站点之后需要完成的工作site-deploy: 将生成的项目站点发布到服务器上
pom 详解
<!--固定的--><modelVersion>4.0.0</modelVersion><!--描述当前项目的组织--><groupId>cn.cdqf</groupId><!--描述当前项目的唯一id--><artifactId>maven_01</artifactId><version>1.0-SNAPSHOT</version><!--定义打包的方式 jar:默认方式 war: web项目最终打成war包 放在服务器上运行 pom:其它项目的父亲 --><packaging>war</packaging><!--spring jar包有50个 组织+id+版本 定义常量 --><properties> <junit.version>4.12</junit.version></properties><!--项目所有依赖都写在这里面 每一个<dependency>就表示一个依赖 groupId+artifactId+version :精确在仓库中定位一个jar --><dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <!--依赖范围--> <scope>test</scope> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> <!--排除当前jar依赖的某个jar包 一般在jar包冲突的时候使用--> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency></dependencies>
scope介绍
例如:测试时有效依赖
<!-- 单元测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency>
scope定义了依赖的范围,默认是compile。compile:编译依赖范围,使用此依赖范围对于编译、测试、运行三种classpath都有效,即在编译、测试和运行时都要使用该依赖jar包;test:测试依赖范围,只对测试有效,表明只在测试的时候需要,在编译和运行时将无法使用该类依赖,如 junit;provided:已提供依赖范围。编译和测试有效,运行无效。如servlet-api,在项目运行时, tomcat等容器已经提供,无需Maven重复引入; runtime:运行时依赖范围。测试和运行有效,编译无效。如 jdbc 驱动实现,编译时只需接口,测试或运行时才需要具体的 jdbc 驱动实现; system:系统依赖范围,使用system范围的依赖时必须通过systemPath元素显示地指定依赖文件的路径,不依赖Maven仓库解析,所以可能会造成建构的不可移植,谨慎使用
jar包冲突
SDK (优秀的开源项目),依赖于某些依赖。
使用SDK时,依赖问题
引入条件:
maven聚合(重点难点)
创建父模块-packaging标签中pom
<!--定义打包的方式 jar:默认方式 war: web项目最终打成war包 放在服务器上运行 pom:其它项目的父亲 --><packaging>war</packaging>
子工程 utils:
当子工程dao 中需要引用时:
面试
Maven常用命令Maven常用命令
编译源代码: mvn compile
编译测试代码:mvn test-compile
清除产生的项目:mvn clean
运行测试:mvn test
打包:mvn package
在本地Repository中安装jar:mvn install
上传项目到远程仓库:mvn deploy(更多是私服,需要用户名密码等认证)
产生site:mvn site 站点,对整个项目的描述,需要加入如下插件
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>3.7.1</version> <dependencies> <dependency> <groupId>org.apache.maven.doxia</groupId> <artifactId>doxia-site-renderer</artifactId> <version>1.8</version> </dependency> </dependencies> </plugin> </plugins></build>
游览器打开,详细项目描述-英语
别说差点,差点就是永远
来源:https://www.cnblogs.com/lnkD/p/14752343.html