Maven

Maven

Maven:项目构建工具

Gradle:安卓领域

Ant:淘汰

 

Maven:项目构建工具

整个项目架构:source,resource,test,testresource

依赖:导入的 jar 包

对项目进行打包

属于apache 基金会

 

配置环境变量

新建 MAVEN_HOME : maven 的安装路径

新建 PATH:新建一个 %MAVEN_HOME%\bin

通过cmd:mvn -v 测试配置成功

Maven解压后

conf 目录,配置文件,在这个目录下有一个 settings.xml,Maven 的核心配置文件

Maven会给我们自动下载 jar 包

把 jar 包放在本地,不往项目里导,通过某些方式连接到 jar 包

 

Maven目录下conf 下 settings.xml 配置

jar 包的保存位置

设置 jar 保存位置

<loclRepository>E:/repository</loclRepository>

Maven 默认中央仓库,在美国

可以做一个镜像,阿里云maven镜像仓库,需要配置阿里云镜像仓库

<mirror>
	<id>alimaven</id>
	<mirrorOf>central</mirrorOf>
	<name>aliyun maven</name>
	<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>

 

创建 Maven 项目

第一次创建 MAVEN 项目,会联网下载一些文件

src
    main---源码
        java---源码.java
        resources---资源文件
    test---测试源码
        java---测试源码.java
        resources---测试资源文件

pom.xml配置文件,来管理依赖

<?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>
<!--  这是我们当前项目的GAV坐标  -->
    <groupId>com.jsoft</groupId>
    <artifactId>maven01</artifactId>
<!--
    版本:
        1、SNAPSHOT:快照,不稳定版本,临时版本
        2、LATEST:最新版,不意味着是稳定版本
        3、RELEASE:发布版,正式版,稳定版
  -->
    <version>0.1</version>

<!--
    打包方式
    1、jar
    2、war
    3、pom
-->
    <packaging>war</packaging>

<!--
        properties定义一些变量
  -->
    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <javax.servlet-api.version>4.0.1</javax.servlet-api.version>
    </properties>

<!-- maven的下载   -->
   <dependencies>
       <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>5.1.49</version>
           <scope>runtime</scope>
       </dependency>
       <!-- https://mvnrepository.com/artifact/junit/junit -->
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.13.2</version>
           <scope>test</scope>
       </dependency>

       <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>javax.servlet-api</artifactId>
           <version>${javax.servlet-api.version}</version>
           <scope>provided</scope>
       </dependency>

   </dependencies>

</project>

建成 web 项目

可用 Maven 项目架构,也可以自己手动设置

手动设置:

在 main 下创建 webapp

在project Settings 设置下 Modules 添加 web 

  Deployment Descriptors设置 \WEB-INF\web.xml位置

  Web Resource Directories 下设置添加 web 添加到哪里

 

Maven生命周期

target目录:存放编译后的java文件

 

点击右侧 Maven

默认(default)真正进行项目编译打包等工作阶段

1、validate:验证项目是否正确

2、compile:编译,编译项目的源代码*****

3、test:测试,junit这些测试不应该要求代码被打包或部署

4、package:进行打包。*****

  java工程-------.jar

  javaweb工程----.war

5、verify:验证,对集成测试结果执行检查

6、install:安装*****

  所有的项目都可以编程jar包(依赖)

7、deploy:部署,将最终的包赋值到远程存储库,和其他开发人员共享(maven私服)

清理(clean)执行必要的清理工作。删除target文件夹

站点(site)生成项目报告,站点,发布站点(基本不用)

 

Maven坐标:

GroupId:团体组织标识符,它一般情况下以创建这个组织的名称的逆向域名开头。

ArtifactId:项目名。单独项目的唯一标识符。

Version:版本

通过这三个向量来定位Maven仓库中其jar包所在的位置,把对应的jar包引入到工程中。

<!-- maven 下载 -->
    <dependencies>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
    </dependencies>

 

依赖范围:

<scope>test</scope>

compile:默认。编译范围,编译,测试,运行都有效。参与打包,安装。

test:测试范围,只有在test范围下才能用,不参与打包,安装。

provided:编译和测试,不参与打包,安装。

runtime:运行,只参与运行。

system:废弃。系统。

import:废弃。引入。

<properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <javax.servlet-api.version>4.0.1</javax.servlet-api.version>
    </properties>

<!-- maven 下载 -->
    <dependencies>
        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>${javax.servlet-api.version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

 

依赖的传递:(常识性问题)

假如demo01中引入了mysql,servlet,fastjson,codec依赖,我把demo01install到了我的本地仓库,或者是maven私服,如果其他成员通过GAV引入了我的demo01,demo01中的mysql,servlet

fastjson,codec会不会一起引入进来???

 

posted @ 2022-09-16 20:30  一只神秘的猫  阅读(48)  评论(0)    收藏  举报