Maven

概述
maven项目管理工具是apach旗下一款跨平台的项目管理工具,用于项目构建和项目依赖
    跨平台:maven项目管理工具由java语言开发,所以具有跨平台特性;
    项目构建:将一个写好的项目变成一个可以运行的项目的过程;	
    
项目构建阶段:
    清理:指的是清理上一次编译之后的字节码文件;
    编译:将程序源代码编译为class字节码文件;批量的,不像javac一次只能编译一个。
    测试:执行项目中所有测试单元的代码;
    打包:将写好的项目打包为指定格式的包;
    安装:把打包生成的文件jar,war安装到本机仓库
    部署:程序安装好之后就可以执行

maven中央仓库地址(通过这个地址搜索jar包坐标):https://mvnrepository.com/    
作用
maven可以自动从中央仓库或者镜像仓库下载jar包和其依赖的其他jar包;

maven提供了一个本地仓库用于存放项目需要的所有jar包,会管理jar包的版本

maven不仅可以根据功能划分项目还可以根据项目结构:controller,service,dao,bean,util划分项目来合作开发
    
maven可以帮助部署项目    
maven核心概念
①POM:一个文件 名称是pom.xml ,  pom翻译过来叫做项目对象模型。 maven把一个项目当做一个模型使用。控制maven构建项目的过程,管理jar依赖。

②约定的目录结构: maven项目的目录和文件的位置都是规定的。
    每一个maven项目在磁盘中都是一个文件夹(项目-Hello)
	Hello/
	  ---/src
	  ------/main           #放你主程序java代码和配置文件
	  ----------/java       #你的程序包和包中的java文件
	  ----------/resources  #你的java程序中要使用的配置文件

	  ------/test           #放测试程序代码和文件的(可以没有)
	  ----------/java       #测试程序包和包中的java文件
	  ----------/resources  #测试java程序中要使用的配置文件

	  ---/pom.xml  #maven的核心文件(maven项目必须有)

③坐标:是一个唯一的字符串,用来表示资源的。

④依赖管理:管理你的项目可以使用jar文件

⑤仓库管理(了解):你的资源存放的位置

⑥生命周期 (了解):maven工具构建项目的过程,就是生命周期。
⑦插件和目标(了解):执行maven构建的时候用的工具是插件
⑧继承
⑨聚合
仓库
1)仓库是什么: 仓库是存放东西的, 存放maven使用的jar(插件)和 我们项目使用的jar(第三方的工具)

2)仓库的分类
    >本地仓库,个人计算机上的文件夹,存放各种jar
    >远程仓库,在互联网上的,使用网络才能使用的仓库
        ①:中央仓库,最权威的, 所有的开发人员都共享使用的一个集中的仓库,中央仓库的地址:https://repo.maven.apache.org
        ②:中央仓库的镜像:就是中央仓库的备份,在各大洲,重要的城市都是镜像。
        ③:私服,在公司内部,在局域网中使用的,不是对外使用的。

3)仓库的使用,maven仓库的使用不需要人为参与。maven首先查本地仓库--->私服--->镜像--->中央仓库

1.修改setting.xml配置文件中的本地仓库:
 	<localRepository>E:\repository</localRepository>

2.配置镜像仓库:
     <mirror>
         <id>alimaven</id>
         <name>aliyun maven</name>
         <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
         <mirrorOf>central</mirrorOf>        
    </mirror>
eclipse中创建maven项目的注意事项
如果是创建web项目,需要修改修改web.xml文件约束,因为原来的版本是2.3:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <display-name>Archetype Created Web Application</display-name>
</web-app> 
pom项目对象模型
坐标:唯一值, 在互联网中唯一标识一个项目的
	 <groupId>公司域名的倒写</groupId>
     <artifactId>自定义项目名称</artifactId>
     <version>自定版本号</version>
    
指定打包格式:
	<!--packaging指定打包格式:
        jar:maven普通项目最终都是打包为jar,packaging不写默认是jar
        war:mavenweb项目最终打包格式为war
        pom:多模块项目中,父模块项目的打包格式
 	-->
    <packaging>war</packaging>

dependencies和dependency,相当于是java代码中import:
<dependencies>
	<!-- dependency依赖:用于下载jar包 -->
    <!-- scope指定jar包的作用范围:
        test:指定该jar包只能应用在测试程序中,不能应用在主程序中
        provided:主程序和测试程序都可以使用,该jar包只参与编译打包,不参与部署;
        compile(默认作用范围):主程序和测试程序都可以使用,并且参与项目整个生命周期:编译打包部署
    -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>provided</scope>
    </dependency>
    
</dependencies>    

maven的依赖排出:maven可以排除jar包依赖的其他jar包:
<dependency>
<!-- 排出maven普通项目中的junitjar包 -->
    <exclusions>
        <exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </exclusion>
    </exclusions>
</dependency>

maven会自动下载jar包依赖的其他jar包(依赖传递)也会自动解决jar包冲突maven在解决jar包冲突时:
	路径不同,根据就近原则选择使用jar包;路径相同时,maven选择pom.xml文件中后引入的jar包;

properties:设置属性
build:maven在进行项目的构建时, 配置信息,例如指定编译java代码使用的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>  
    </properties>   
</profile>
maven生命周期, maven的命令,maven的插件
maven的生命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署
	maven的命令:maven独立使用,通过命令,完成maven的生命周期的执行。
	maven的插件:maven命令执行时,真正完成功能的是插件,插件就是一些jar文件,一些类。

清理:clean清除项目上一次编译的字节码文件

编译:compile将项目编译为字节码文件;

测试:test默认执行项目中类名包含Test的单元测试;

打包:package将项目打包为指定格式的包,存放在target目录下(不会放到仓库中);

部署:install/deploy:将项目打包为指定格式的包,并将项目存放到仓库中;
junit
在maven项目中的src/test/java目录下,创建测试程序。
推荐的创建类和方法的提示:
    1.测试类的名称 是Test+你要测试的类名
    2.测试的方法名称 是:Test+方法名称

@Test
public void testAdd(){
	测试HelloMaven的add方法是否正确
}
其中testAdd叫做测试方法,它的定义规则
    1.方法是public的,必须的
    2.方法没有返回值,必须的
    3.方法名称是自定义的,推荐是Test+方法名称
    4.在方法的上面加入 @Test
idea中使用maven
1.idea中内置了maven ,一般不使用内置的, 因为用内置修改maven的设置不方便。使用自己安装的maven, 需要覆盖idea中的默认的设置。

配置的入口:
①:配置当前工程的设置, file--settings ---Build, Excution,Deployment--Build Tools
    --Maven 
        Maven Home directory: maven的安装目录
        User Settings File:就是maven安装目录conf/setting.xml配置文件
        Local Repository:本机仓库的目录位置
    --Build Tools--Maven--Runner  
    	VM Options : -DarchetypeCatalog=internal
-DarchetypeCatalog=internal的用处:
      maven项目创建时,会联网下载模版文件,比较大, 使用-DarchetypeCatalog=internal,不用下载, 创建maven项目速度快。
            
②:配置以后新建工程的设置, file--other settings--Settings for New Project
    
2.使用模版创建项目
  1)maven-archetype-quickstart : 普通的java项目
  2)maven-archetype-webapp : web工程    
maven常用操作
1.maven的属性设置
     <properties> 设置maven的常用属性
2.maven的全局变量
     自定义的属性:
        1.在<properties> 通过自定义标签声明变量(标签名就是变量名)
        2.在pom.xml文件中的其它位置,使用 ${标签名} 使用变量的值
		自定义全局变量一般是定义依赖的版本号,当你的项目中要使用多个相同的版本号,先使用全局变量定义, 在使用${变量名}
         
3.资源插件
  <build>
	<resources>
        <resource>
            <directory>src/main/java</directory><!--所在的目录-->
            <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
            <include>**/*.properties</include>
            <include>**/*.xml</include>
            </includes>
            <!--filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了-->
            <filtering>false</filtering>
        </resource>
	</resources>
  </build>
作用: mybatis课程中会用到这个作用
多模块项目中统一jar包版本管理
使用dependencymanagement标签,将要管理的jar包放入其中,注意这只是声名,不引入jar包,引入是在具体的模块中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值