2021-12-20  2021-12-20    1764 字   4 分钟

一、Maven

1. 理解

 本意专家 内行是一款自动化构建工具专注服务于Java平台的项目构建和依赖管理
     
     构建
     	指我们将一些源码配置文件图片视频音频等 作为"源材料""生成"出一个可以运行 可以访问的项目的过程
     
     构建的环节
        1.  清理删除以前的编译为重新编译做准备
        2.  编译将Java源码编译成字节码
        3.  测试针对性的测试保证正确性
        4.  报告以标准的格式来记录测试结果
        5.  打包将项目压缩成可以部署的文件Java项目 jar  Web项目 war
        6.  安装将打好的包安装到Maven仓库中 以便于其他应用依赖使用
        7.  部署将打包后的文件 部署到远程仓库或者服务器中运行

2. Maven的作用

- 引入第三方jar利用Maven引入jar的坐标根据坐标自动引入jar和依赖jar
- 处理jar之间的依赖关系
- 处理jar之间的冲突
- 项目的分模块开发
- 实现分布式部署

3. Maven的使用

1. 下载 安装 https://maven.apache.org/download.cgi
2. 解压目录不要过深不要中文路径
3. 检查 JAVA_HOME 环境变量
4. 配置环境变量
     MAVEN_HOME 路径为Maven安装路径
     在Path变量中引入 %MAVEN_HOME%\bin
    
5. 检查
    在doc中 mvn -v
配置Maven本地仓库
    1. 在本地创建文件夹作为本地仓库目录不要过深不要中文路径
    2. 在Maven配置文件中指定本地仓库地址
    	<localRepository>D:\javaTools3\RepMaven</localRepository> 
            
    3. 在Maven配置文件中指远程仓库地址
       <server>
		<id>huaweicloud</id>
		<username>anonymous</username>
		<password>devcloud</password>
       </server>
       <mirror>
            <id>huaweicloud</id>
            <mirrorOf>*</mirrorOf>
            <url>https://mirrors.huaweicloud.com/repository/maven/</url>
        </mirror>
            
     4. 配置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>   

4. Idea整合Maven

5. 创建Maven项目

#####5.1 创建Java项目

5.2 创建web应用
在Java项目的基础上 安装JBLJavaToWeb 插件 转换一下即可

####6. Maven的核心概念

6.1 POM
	Project Object Model:项目对象模型 将整个项目封装成对象便于操作和管理Maven项目的核心配置文件
6.2 目录结构
 约定 > 配置 > 编码能使用配置文件解决问题 不编码能约定的不使用配置文件
     
     项目名
     	src
     		main 
     			java
     			resources
     		test 
     			java
     	pom.xml
6.3 坐标
定位资源的位置
    groupId     公司域名倒写+项目名
    artifactId  当前的模块名
    version     版本号

    <groupId>com.ujiuye.maven</groupId>
    <artifactId>mv_pro1</artifactId>
    <version>1.0-SNAPSHOT</version>
6.4 仓库
 本地仓库为当前本机上的maven工程服务
 远程仓库本地没有 直接去远程仓库下载
    1. 私服 当前的局域网下的一个范围的仓库
    2. 中央仓库架设在internet中的 为全世界的Maven工程服务的
    3. 中央仓库镜像架设在各大洲减轻中央仓库的压力更快响应用户的请求

7. Maven构建(生命周期)

lif:生命周期
	clean:清理
	validate:校验
	compile:编译
	test:测试
	package:打包
	verify
	install:安装
	site
	deploy:部署
plugins:插件

8. 依赖管理

#####8.1 依赖的传递性

1. 间接传递  
    项目A 依赖 项目B  项目B依赖junit4.12项目A也可以直接使用junit4.12
2. 直接传递
    项目B直接在pom中引入junit4.12的依赖
8.2 依赖的传递范围
 compile 编译
    1. main目录下的Java代码可以访问该范围的依赖
    2. test目录下的Java代码可以访问该范围的依赖
    3. 部署到服务器中运行时放入到WEB-INF/lib目录下
    
 test 
    1. main目录下的Java代码不可以访问该范围的依赖
    2. test目录下的Java代码可以访问该范围的依赖
    3. 部署到服务器中运行时不会放入到WEB-INF/lib目录下
    junit
 provided
     1. main目录下的Java代码可以访问该范围的依赖
     2. test目录下的Java代码可以访问该范围的依赖
     3. 部署到服务器中运行时不会放入到WEB-INF/lib目录下
    
 其他runtime  import  system等
8.3 依赖排除
依赖的原则
    路径最短者优先原则
    先声明者优先原则
依赖排除
    <dependency>
            <groupId>com.ujiuye.maven</groupId>
            <artifactId>mv_pro1</artifactId>
            <version>1.0-SNAPSHOT</version>
            <!--依赖排除-->
            <exclusions>
                <exclusion>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
8.4 版本统一管理
1. 声明变量指定版本具体值
    <properties>
        <spring.version>4.1.1.RELEASE</spring.version>
    </properties>
    
2. 使用直接使用变量名
    <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>

9. 多模块开发

9.1 继承关系
父工程中管理依赖
    <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.ujiuye.maven</groupId>
    <artifactId>Parent</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>Son1</module>
        <module>Son2</module>
    </modules>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>
子工程中 继承父工程管理的依赖
    <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Parent</artifactId>
        <groupId>com.ujiuye.maven</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Son1</artifactId>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>

</project>
9.2 聚合
通过父工程将多个子工程模块 聚合在一起 统一使用统一管理
    <modules>
        <module>Son1</module>
        <module>Son2</module>
    </modules>

二、酷站

如果不知道坐标 可以在该网站搜索
  https://mvnrepository.com/
  https://search.maven.org/

如果有jar文件 但是没有坐标 此时可以将jar文件安装到本地仓库
   mvn install:install-file -Dfile="jar地址" -DgroupId=组ID -DartifactId=项目名 -Dversion=版本号 -Dpackaging打包方式

avatar
青山
悟已往之不谏 知来者之可追
一言
今日诗词
站点信息
本站访客数 :
本站总访问量 :