学习笔记整理_Maven

1 篇文章 0 订阅

Maven

maven - 内行,专家

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

作用:

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

maven项目结构

1. 安装和配置

Java语言编写
	解压
	配置环境变量(不使用DOS窗口的话,可不用配置)
	MAVEN_HOME=path\apache-maven-3.3.9
	Path=%MAVEN_HOME%\bin
Maven目录介绍
目录名功能说明
bin可执行文件所在的目录,其中mvn.cmd是它核心执行文件
boot第三方类加载器
confmaven的配置文件所在的目录,其中settings.xml是maven的核心配置文件
lib因为maven是使用java写的,这是它的依赖jar包
仓库
本地仓库
私服:保存具有版权的资源,包含购买或自主研发的jar,一定范围内共享资源
中央仓库:maven团队维护,其中所有jar都是开源的,不能存储具有版权的资源
坐标
  • 描述资源在仓库中的唯一标识
  • 创建每个项目或模块都需要指定一个坐标,这个坐标是指当前项目放在仓库中坐标,以后这个项目或模块可以被别人引用。
  • 每个jar包放在仓库中都有一个唯一的坐标,坐标是jar包唯一标识,不会重复。通过这个坐标找到每个jar包。
groupId 通常是域名反写,表隶属组织
artifactId 项目或模块名称
version 版本
配置文件
1. 修改本地仓库
	<localRepository>f:\develop\repository</localRepository>
	要求本地仓库同级目录有setting.xml文件,作为个人设置,会覆盖全局设置

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

3. JDK的全局配置
	<profile>
		    <id>jdk-1.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>
		        <project.build.sourceEncoding>UTF-8</project.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.0</modelVersion>  
  <groupId>javaee</groupId>  
  <artifactId>day29_maven</artifactId>  
  <version>1.0-SNAPSHOT</version>
  <!-- 开发中版本 RELEASE表示完成版 -->
  <packaging>war</packaging>
	<!--
    指定打包的类型:
    	如果是java工程:打包成jar
    	如果是web工程: 打包成war
    -->
  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
      <scope>runtime</scope>
    </dependency>
  </dependencies>
</project>

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

依赖传递

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

可选依赖:对外隐藏间接依赖
	<dependency>添加字标签<optinal>true</optional>
	
排除依赖:主动断开依赖的资源,无论版本
	<exclusions>
		<exclusion>
			<groupId></groupId>
			<artifactId></artifactId>
		<exclusion>
	<exclusions>

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.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <!--插件配置dependencies-->
                <configuration>
                    <port>8081</port>
                    <!--项目的访问地址-->
                    <path>/test</path>
                    <uriEncoding>UTF-8</uriEncoding>
                    <!--服务器名-->
                    <server>tomcat7</server>
                </configuration>
            </plugin>
        </plugins>
    </build>

3. jar包的依赖范围

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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值