学习笔记整理_Maven

Maven

maven - 内行,专家

POM:Project Object Model 项目对象模型,把整个项目抽象成一个对象,按面向对象的思想去处理项目中所有的元素,方便对项目的管理。

作用:

  • 项目构建:提供标准的、跨平台的自动化项目构建方式
  • 依赖管理:方便快捷方的管理项目依赖的资源(jar包),避免版本冲突
  • 统一开发结构:提供标准的、统一的项目结构

学习笔记整理_Maven_第1张图片

1. 安装和配置

Java语言编写
	解压
	配置环境变量(不使用DOS窗口的话,可不用配置)
	MAVEN_HOME=path\apache-maven-3.3.9
	Path=%MAVEN_HOME%\bin

Maven目录介绍

目录名 功能说明
bin 可执行文件所在的目录,其中mvn.cmd是它核心执行文件
boot 第三方类加载器
conf maven的配置文件所在的目录,其中settings.xml是maven的核心配置文件
lib 因为maven是使用java写的,这是它的依赖jar包

仓库

本地仓库
私服:保存具有版权的资源,包含购买或自主研发的jar,一定范围内共享资源
中央仓库:maven团队维护,其中所有jar都是开源的,不能存储具有版权的资源

坐标

  • 描述资源在仓库中的唯一标识
  • 创建每个项目或模块都需要指定一个坐标,这个坐标是指当前项目放在仓库中坐标,以后这个项目或模块可以被别人引用。
  • 每个jar包放在仓库中都有一个唯一的坐标,坐标是jar包唯一标识,不会重复。通过这个坐标找到每个jar包。
groupId 通常是域名反写,表隶属组织
artifactId 项目或模块名称
version 版本

配置文件

1. 修改本地仓库
	<localRepository>f:\develop\repositorylocalRepository>
	要求本地仓库同级目录有setting.xml文件,作为个人设置,会覆盖全局设置

2. 设置中央仓库的镜像
	<mirror>
      <id>nexus-aliyunid>
      <mirrorOf>centralmirrorOf>
      <name>Nexus aliyunname>
      <url>http://maven.aliyun.com/nexus/content/groups/publicurl>
    mirror>

3. JDK的全局配置
	<profile>
		    <id>jdk-1.8id>
		    <activation>
		        <activeByDefault>trueactiveByDefault>
		        <jdk>1.8jdk>
		    activation>
		    <properties>
		        <maven.compiler.source>1.8maven.compiler.source>
		        <maven.compiler.target>1.8maven.compiler.target>
		        <maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
		        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
		    properties>
		profile>

IDEA中的配置

Maven home directory 设置maven主目录
User setting file 配置文件路径
Local repository 配置本地仓库位置

Build, Execution, Deployment>Maven>Runner VM Options:
	-DarchetypeCatalog=internal
		所有资源先从本地仓库查找,如果本地仓库中没有才去互联网找。
	-Dfile.encoding=GBK  或者 -Dfile.encoding=UTF-8
		控制台乱码
		
如果在pom.xml中输入的jar包没有提示,可以手动更新本地仓库的索引	
	Build, Execution, Deployment -> Maven -> Repositories

pom.xml

	
  <modelVersion>4.0.0modelVersion>  
  <groupId>javaeegroupId>  
  <artifactId>day29_mavenartifactId>  
  <version>1.0-SNAPSHOTversion>
  
  <packaging>warpackaging>
	
  <dependencies>
    <dependency>
      <groupId>javax.servletgroupId>
      <artifactId>javax.servlet-apiartifactId>
      <version>3.1.0version>
      <scope>providedscope>
    dependency>

    <dependency>
      <groupId>junitgroupId>
      <artifactId>junitartifactId>
      <version>4.12version>
      <scope>testscope>
    dependency>

    <dependency>
      <groupId>mysqlgroupId>
      <artifactId>mysql-connector-javaartifactId>
      <version>5.1.38version>
      <scope>runtimescope>
    dependency>
  dependencies>
project>

https://mvnrepository.com 在线查找jar包的坐标

依赖传递

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4iru3I8G-1593828012321)(F:\develop\Z_JavaEE\level_2_Maven.assets\1593826825546.png)]

可选依赖:对外隐藏间接依赖
	添加字标签true
	
排除依赖:主动断开依赖的资源,无论版本
	
		
			
			
		
	

2. Maven的生命周期

这些命令可以在工作目录(pom.xml)同级目录下执行 如:mvn clean

clean 用于清除target目录,类似于清除缓存
	target目录是项目执行期间自动生成的,类似于out目录
	
test 执行test目录下所有的测试类和测试方法

compile 编译main目录下所的Java源代码,生成字节码文件。不会去编译test目录下东西

package 用于把项目打包,如果是java工程,打包成jar。如果是web工程,打包成war,在pom.xml文件中已经配置。将整个项目打包到target目录下,以后要使用就可以从target目录下复制出来。会重新执行生命周期前面的命令,如果前面的命令执行失败,则打包也失败。

install 会执行上面所有的命令,先清除,再编译,再执行测试,再打包,最后安装到本地仓库中去

插件的使用

	Maven只提供了基本的项目处理能力和管理,它的功能主要是通过其它插件来实现的。就好比jQuery和jQuery插件的关系。每个Maven插件可以完成一些特定的功能。

tomcat7插件

   <build>
        <plugins>
            <plugin>
                
                <groupId>org.apache.tomcat.mavengroupId>
                <artifactId>tomcat7-maven-pluginartifactId>
                <version>2.2version>
                
                <configuration>
                    <port>8081port>
                    
                    <path>/testpath>
                    <uriEncoding>UTF-8uriEncoding>
                    
                    <server>tomcat7server>
                configuration>
            plugin>
        plugins>
    build>

3. jar包的依赖范围

Maven在执行过程中有三种类路径,在运行时使用对应路径下的包来执行。
	编译类路径(compile)
	测试类路径(test)
	运行时类路径(package)
	
依赖范围:
	compile 默认,所有类路径都可以使用
	provided 不参与打包(Servlet, Jsp)避免冲突
	test 仅测试时使用(Junit)
	runtime 编译期不使用(Mysql的驱动)

学习笔记整理_Maven_第2张图片

你可能感兴趣的:(笔记,Web)