北京网站开发哪家好薇,wordpress主题百度网盘,公司网站经常打不开,注册公司需要什么材料Maven的概念 什么是Maven
翻译为“专家”#xff0c;“内行”Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建#xff0c;依赖管理和项目信息管理。什么是理想的项目构建#xff1f; 高度自动化#xff0c;跨平台#xff0c;可重用的组件#xff0c;标准…
Maven的概念 什么是Maven
翻译为“专家”“内行”Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建依赖管理和项目信息管理。什么是理想的项目构建 高度自动化跨平台可重用的组件标准化的什么是依赖为什么要进行依赖管理 自动下载统一依赖管理A1.0 依托于 B 2.0 依托于 C3.0
有哪些项目信息 项目名称描述等开发人员信息开发者信息等 什么是依赖管理
对第三方依赖包的管理可以连接互联网下载项目所需第三方jar包。
对自己开发的模块的管理可以像引用第三方依赖包一样引用自己项目的依赖包。 -------- 什么是项目构建
项目构建是一个从编写源代码到编译、测试、运行、打包、部署的过程。
传统项目和maven项目构建的两种方式
传统项目
打开Idea编写源代码和配置文件对源代码进行编译可以使用Junit进行单元测试把项目打成war包部署到Tomcat服务器中运行。
maven项目
maven将项目构建过程进行标准化每个阶段都可以使用一个命令来完成。
清理 -- 编译 -- 测试 -- 报告 -- 打包 -- 部署
好处
可以通过命令完成项目构建。测试使用mvn tomcat:run的命令来发布运行项目
maven对每个构建阶段进行规范有利于大型团队协作开发。 Maven的应用场景
maven的应用场景开发人员只要按着maven标准的目录结构进行开发即可然后提交代码。在测试服务器上拉取Java源码然后可以使用maven的自动化项目构建完成项目的清理、编译、测试、打包和安装部署等。 为什么使用MavenIDEEclipseIDEA 手工操作较多编译、测试、部署等工作都是独立的很难一步完成每个人的IDE配置都不同很容易就出错出现本地代码换个地方编译Ant 没有一个约定的目录结构必须明确让ant做什么什么时候做然后编译打包没有生命周期必须定义目标及其实现的任务序列没有集成依赖管理Maven 拥有约定知道你的代码在哪里放到哪里去拥有一个生命周期例如执行 mvn install 就可以自动执行编译测试打包等构建过程只需要定义一个pom.xml,然后把源码放到默认的目录Maven帮你处理其他事情拥有依赖管理仓库管理 Maven模型 初识Maven Maven安装 安装准备
安装jdk1.8或以上版本 略下载Maven 地址Download Apache Maven – Maven下载地址Index of /dist/maven/maven-3/3.6.0/binaries版本Maven3.6安装Maven 解压到相应目录即可(无中文路径) Maven安装目录分析 bin含有mvn运行的脚本
boot含有plexus-classworlds类加载器框架
conf含有settings.xml配置文件
lib含有Maven运行时所需要的java类库
LICENSE.txt, NOTICE.txt, README.txt针对Maven版本第三方软件等简要介绍 Maven的环境变量设置MAVEN_HOME环境变量
升级时只需要下载最新版本解压缩重新设置MAVEN_HOME环境变量即可
设置MAVEN_OPTS环境变量
-Xms128m -Xmx512m
配置用户范围的settings.xml
%MAVEN_HOME%/conf/settings.xml 全局的~/.m2/settings.xml 单个用户的
设置MAVEN_HOME环境变量,把maven的解压后的路径添加为变量值 设置Path环境变量,把 %MAVEN_HOME%\bin 添加到Path的变量值末尾,与前面的内容用 ; 隔开,如图: 配置MAVEN_OPTS运行环境变量大小解决大型项目内存溢出的问题
找到命令改参数治标不治本
-Xms128m -Xmx512m 验证配置是否完成 Maven的第一个项目 按照约定创建Maven项目目录src/main/java —— 存放项目的.java文件 src/main/resources —— 存放项目资源文件如spring, mybatis配置文件 src/test/java —— 存放所有测试.java文件如JUnit测试类 src/test/resources —— 测试资源文件 target —— 项目输出位置 pom.xml 在项目Hello根目录建立pom.xml
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion groupIdcn.tx.maven/groupId artifactIdHello/artifactId version0.0.1-SNAPSHOT/version nameHello/name dependencies
dependency
groupIdjunit/groupId
artifactIdjunit/artifactId
version4.9/version
scopetest/scope
/dependency /dependencies
/project 创建Hello.java文件
在src/main/java/cn/tx/maven目录下新建文件Hello.java
package cn.tx.maven;
public class Hello {
public String sayHello(String name){
return Hello name!;
}
} 创建HelloTest.java文件
在/src/test/java/cn/tx/maven目录下新建测试文件HelloTest.java
package cn.tx.maven;
import org.junit.Test;
import static junit.framework.Assert.*;
public class HelloTest {
Test
public void testHello(){
Hello hello new Hello();
String results hello.sayHello(maven);
assertEquals(Hello maven!,results);
}
} 进行maven的项目操作打开cmd命令行进入Hello项目根目录执行 mvn compile命令查看根目录变化cmd 中继续录入mvn clean命令然后再次查看根目录变化cmd 中录入 mvn clean compile命令, 查看根目录变化cmd 中录入 mvn clean test命令查看根目录变化cmd 中录入 mvn clean package命令,查看根目录变化cmd 中录入 mvn clean install 查看仓库会把项目安装到仓库里 Maven的第二个项目 按照约定创建Maven项目目录
HelloFriend --src -----main ----------java ----------resources -----test ---------java ---------resources --pom.xml 在项目HelloFriend根目录建立pom.xml
在项目HelloFriend根目录建立pom.xml
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion groupIdcn.tx.maven/groupId artifactIdHelloFriend/artifactId version0.0.1-SNAPSHOT/version nameHelloFriend/name dependencies
dependency
groupIdjunit/groupId
artifactIdjunit/artifactId
version4.9/version
scopetest/scope
/dependency dependency
groupIdcn.tx.maven/groupId
artifactIdHello/artifactId
version0.0.1-SNAPSHOT/version
scopecompile/scope
/dependency /dependencies
/project 创建HelloFriend.java文件
在src/main/java/cn/tx/maven目录下新建文件HelloFriend.java
package cn.tx.maven; import cn.tx.maven.Hello; public class HelloFriend { public String sayHelloToFriend(String name){ Hello hello new Hello();
String str hello.sayHello(name) I am this.getMyName();
System.out.println(str);
return str;
} public String getMyName(){
return John;
} } 创建HelloFriendTest.java文件
在/src/test/java/cn/tx/maven目录下新建测试文件HelloFriendTest.java
package cn.tx.maven; import static junit.framework.Assert.assertEquals; import org.junit.Test; import cn.tx.maven.Hello; public class HelloFriendTest {
Test
public void tesHelloFriend(){ HelloFriend helloFriend new HelloFriend();
String results helloFriend.sayHelloToFriend(zhangsan);
assertEquals(Hello zhangsan! I am John,results); }
} 测试打包HelloFriend项目
在HelloFriend目录下执行命令mvn package 系统报错提示:Could not find artifact cn.tx.maven:Hello:jar:0.0.1-SNAPSHOT,表示无法找到HelloFriend所依赖的Hello 0.0.1-SNAPSHOT.jar
故此我们需要重新构建第一个项目Hello并安装到数据仓库在命令行Hello根目录下执行mvn clean install 对Hello项目进行清理并安装后,对HelloFriend项目再次进行打包 可以看到本次打包成功,说明HelloFriend项目已经可以加载Hello项目所打包的jar包 Maven仓库配置 Maven仓库概念何为Maven仓库 用来统一存储所有Maven共享构建的位置就是仓库Maven仓库布局 根据Maven坐标定义每个构建在仓库中唯一存储路径groupId/artifactId/version/artifactId-version.packaging仓库的分类 本地仓库 ~/.m2/repository/ 可修改每个用户只有一个本地仓库远程仓库 中央仓库Maven默认的远程仓库
http://repo1.maven.org/maven2 私服是一种特殊的远程仓库它是架设在局域网内的仓库 Maven本地仓库配置 全局本地仓库(所有操作系统用户均影响)
%MAVEN_HOME%\conf\settings.xml文件,修改该文件会影响所有使用该Maven的用户的本地仓库,例如: 用户本地仓库(仅影响使用该配置文件的用户或程序)
该文件可以在任意目录,例如: 修改配置文件设置Maven本地仓库(以全局设置为例)
编辑D:\TOOLS\maven\apache-maven-3.5.4\conf\settings.xml文件
找到如下位置: 修改为: 保存退出即可
以上配置表示所有使用该Maven的程序或用户,如未单独配置,则默认加载以上目录的本地库文件;
Ps:课程提供本地库文件为shoprapository.zip,如果遇到打包不成功,jar包无法下载等情况,优先进行本地库配置,避免因网络导致的maven依赖包问题. IDEA整合Maven项目 IDEA的Maven全局配置
启动IDEA后找到Settings 以上设置完成表示在本idea上,所有项目如未对Maven的配置进行单独配置,则默认均使用该Maven版本和本地库设置; IDEA创建Maven的Java项目 至此Maven的Java项目创建完成 测试Maven的jar包引入 以上,在IDEA上使用Maven进行Java项目的创建及测试已完成! IDEA创建Maven的Java web项目 配置完毕后会进行web项目的初始化,初始化过程取决于本地库是否已生成及网络情况,推荐使用课程提供的Maven本地库
如果创建项目速度非常慢,并且在Generating project in Batch mode卡住,则进行全局设置如下:
-DarchetypeCataloglocal 以上web项目则创建成功,接下来需要进行一些配置来确定web项目可以正常运行 添加war包的方法: 配置web服务器 添加本地tomcat配置 测试项目运行 至此,在IDEA上使用Maven配置的Java web工程已经完成配置 IDEA导入既有Maven项目
以导入刚才的Maven项目的例子做示范: 导入引入依赖Hello项目的HelloFriend项目,可以看到Hello项目已经被打成jar包引用到HelloFriend的Maven依赖中 Maven项目视图主要用于查看该maven项目的各项属性,同时也可以进行一些常见的maven的操作,比如打包,清理,测试等等;