maven的使用

maven使用

下载
  1. 按照对应的jdk版本进行下载 : https://maven.apache.org/
  2. 并在环境变量中配置M2_HOME以及在path下配置%M2_HOME%\bin
  3. 在命令行窗口下执行mvn -v,如果出现以下结果安装成功
    在这里插入图片描述
什么是maven
  1. maven是一款服务于java平台的自动化构建工具
  2. maven是apache组织开源的项目
  3. maven本身是java开发的
  4. 可以使用maven对java项目进行构建、依赖管理
maven的作用
  1. 依赖管理
  2. 一键构建
  3. 有许多的插件,可以支持整个项目的开发、打包、测试及部署等一系列行为。
  4. 下载jar包
maven的相关词汇
  1. 仓库
    1. 本地仓库:当前电脑上部署的仓库,为当前电脑上所有的Maven工程服务。
    2. 远程仓库:架设在Internet上,为全世界的所有Maven工程服务。
    3. 私服:架设在当前局域网环境下,为当前局域网范围内的所有Maven工程服务。
  2. 坐标:
    使用下面三个向量在仓库中唯一定位一个Maven工程
<!--组id 一般为公司名+项目名-->
<groupId>junit</groupId>
<!--模块名-->
<artifactId>junit</artifactId>
<!--对应模块的版本-->
<version>3.8.1</version>
  1. 作用域:
    scope:
  2. test 仅在测试时有效;
  3. compile 在编译、运行、测试、打包都有效;
  4. provided 编译、测试时有效,运行、打包无效;
  5. runtime 测试、运行、打包时有效;
  6. system 不推荐使用,使用system作用域不会去本地仓库寻找依赖,要指定本地路径
命令行创建项目
1. mvn archetype:generate -DgroupId=com.jinxiangyang -DartifactId=java -DarchetypeArtifactId=maven-archetype-quickstart
使用maven-archetype-quickstart脚手架进行创建、该命令创建组id为com.jinxiangyang,工件id为java
1. mvn archetype:generate -DgroupId=com.jinxiangyang -DartifactId=web -DarchetypeArtifactId=maven-archetype-webapp
使用maven-archetype-webapp脚手架进行创建、该命令创建组id为com.jinxiangyang,工件id为web
maven生命周期
  1. validate 验证项目
  2. compile 执行编译
  3. test 测试
  4. package 打包
  5. verify 检查
  6. install 安装
  7. deploy 部署
maven项目结构
  1. java项目
    在这里插入图片描述

在这里插入图片描述

  1. web项目
    在这里插入图片描述

在这里插入图片描述

maven的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>
  <!--  使用parent标签指定当前工程的父工程-->
  <!--  <parent>-->
  <!--        父工程的坐标-->
  <!--    <groupId>com.atguigu.maven</groupId>-->
  <!--    <artifactId>pro03-maven-parent</artifactId>-->
  <!--    <version>1.0-SNAPSHOT</version>-->
  <!--  </parent>-->

  <!-- 当前Maven工程的坐标/子工程坐标 -->
  <!-- 如果子工程坐标中的groupId和version与父工程一致,那么可以省略 -->
  <groupId>com.jingxianyang</groupId>
  <artifactId>server</artifactId>
  <!--  version:模块的版本号,根据自己的需要设定-->
  <!--  例如:SNAPSHOT 表示快照版本,正在迭代过程中,不稳定的版本-->
  <!--  例如:RELEASE 表示正式版本-->
  <version>0.0.1-SNAPSHOT</version>
  <!-- 当前Maven工程的打包方式,可选值有下面三种: -->
  <!-- jar:表示这个工程是一个Java工程  -->
  <!-- war:表示这个工程是一个Web工程 -->
  <!-- pom:表示这个工程是“管理其他工程”的工程,父工程不需要src目录 -->
  <packaging>war</packaging>


  <properties>
    <!-- 工程构建过程中读取源码时使用的字符集 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <!-- 通过自定义属性,统一指定mysql依赖的版本 -->
    <jingxianyang.mysql.version>8.0.29</jingxianyang.mysql.version>
    <jingxianyang.servlet.version>3.1.0</jingxianyang.servlet.version>
    <jingxianyang.druid.version>1.2.8</jingxianyang.druid.version>
    <jingxianyang.dbutils.verison>1.6</jingxianyang.dbutils.verison>
    <jingxianyang.thymeleaf.version>3.0.15.RELEASE</jingxianyang.thymeleaf.version>
    <jingxianyang.junit.version>4.13.2</jingxianyang.junit.version>
    <jingxianyang.logback.version>1.2.11</jingxianyang.logback.version>
    <jingxianyang.lombok.version>1.18.22</jingxianyang.lombok.version>
  </properties>

  <!--  子模块-->
  <!--  <modules>-->
  <!--    <module>pro04-maven-module</module>-->
  <!--  </modules>-->
  <!-- 使用dependencyManagement标签配置对依赖的管理 -->
  <!-- 被管理的依赖并没有真正被引入到工程 -->
  <!-- 子工程引用父工程中的依赖信息时,可以把版本号去掉。	-->
  <!-- 把版本号去掉就表示子工程中这个依赖的版本由父工程决定。 -->
  <!-- 具体来说是由父工程的dependencyManagement来决定。 -->
  <!--  dependencies复数标签:里面包含dependency单数标签-->
  <dependencies>
  <!--    dependency单数标签:配置一个具体的依赖-->
  <!--    查找依赖的地址https://mvnrepository.com/ -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${jingxianyang.lombok.version}</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${jingxianyang.mysql.version}</version>
      <!-- scope标签配置依赖的范围 -->
      <!--    runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。-->
      <!--    <scope>runtime</scope>-->
      <!--    provided:只在编译或测试的时候使用-->
      <!--    <scope>provided</scope>-->
      <!--    compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,-->
      <!--    运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。-->
      <!--    <scope>compile</scope>-->
      <!--    test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包-->
      <!--    <scope>compile</scope>-->
      <!--    test 和 provided 范围不能传递-->
      <!--     <scope>import</scope>-->
      <!--     import 依赖范围使用要求:-->
      <!--              打包类型必须是 pom-->
      <!--              必须放在 dependencyManagement 中-->
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>${jingxianyang.servlet.version}</version>
      <scope>provided</scope>
      <!--      使用excludes标签配置依赖的排除-->
      <!--      <exclusions>-->
      <!--        在exclude标签中配置一个具体的排除-->
      <!--        <exclusion>-->
      <!--          指定要排除的依赖的坐标(不需要写version)-->
      <!--          <groupId>commons-logging</groupId>-->
      <!--          <artifactId>commons-logging</artifactId>-->
      <!--        </exclusion>-->
      <!--      </exclusions>-->
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${jingxianyang.junit.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>${jingxianyang.logback.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
      <!--  对构建过程进行自己的定制-->
      <!--  <build>-->
      <!--    当前工程在构建过程中使用的最终名称-->
      <!--    <finalName>demo-me</finalName>-->
      <!--  </build>-->
  <build>

  </build>
  <!--mvn package 打包操作-->
<!--mvn clean 删除 target 目录-->
<!--mvn compile 主程序编译-->
<!--mvn test 测试操作 测试操作中会提前自动执行编译操作,测试成功就说明编译也是成功的-->
<!--mvn test -complie 测试程序编译-->
<!--mvn install 安装操作-->
<!--mvn dependency:list 查看当前工程依赖的jar包列表-->
<!--mvn dependency:tree 以树形结构查看当前Web工程的依赖信息-->
<!--mvn clean install -Dmaven.test.skip=true -D 表示后面要附加命令的参数,字母 D 和后面的参数是紧挨着的,中间没有任何其它字符 表示在执行命令的过程中跳过测试-->
<!--mvn help:effective-pom 查看有效 POM-->
<!--mvn archetype:generate-->
<!--        mvn主命令:-->
<!--           子命令:-->
<!--           archetype插件-->
<!--           generate目标-->
<!--创建web工程命令-->
<!--mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4-->
<!--pom四个层次-->
<!--        超级POM:所有 POM 默认继承,只是有直接和间接之分。-->
<!--        父POM:这一层可能没有,可能有一层,也可能有很多层。-->
<!--        当前pom.xml 配置的 POM:我们最多关注和最多使用的一层。-->
<!--        有效POM:隐含的一层,但是实际上真正生效的一层。-->
<!--        官网说明地址:https://maven.apache.org/plugins/maven-help-plugin-->
<!--        目标                    	              说明-->
<!--        help:active-profiles	              列出当前已激活的 profile-->
<!--        help:all-profiles	                  列出当前工程所有可用 profile-->
<!--        help:describe	                      描述一个插件和/或 Mojo 的属性-->
<!--        help:effective-pom	                  以 XML 格式展示有效 POM-->
<!--        help:effective-settings	              为当前工程以 XML 格式展示计算得到的 settings 配置-->
<!--        help:evaluate	                      计算用户在交互模式下给出的 Maven 表达式-->
<!--        help:system         	              显示平台详细信息列表,如系统属性和环境变量-->
</project>
maven的setting.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
   <!-- 本地仓库 -->
   <!-- 默认用户目录下.m2/repository -->
  <localRepository>D:/Program Files/Apache Software Foundation/apache-maven-3.9.0/repository/</localRepository> 
  <pluginGroups>
   
  </pluginGroups>
  <proxies>
     <!-- 配置代理 -->
  </proxies>

  <servers>
  </servers>
  <mirrors>
      <mirror>
         <id>alimaven</id>
         <mirrorOf>central</mirrorOf>
         <name>aliyun maven</name>
         <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
   </mirror>
    <mirror>
      <id>alimaven1</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/repository/central</url>
    </mirror>
    <mirror>
      <id>maven-default-http-blocker</id>
      <mirrorOf>external:http:*</mirrorOf>
      <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
      <url>http://0.0.0.0/</url>
      <blocked>true</blocked>
    </mirror>
  </mirrors>
<profiles>
   <!--配置jdk版本-->
</profiles>
  <!-- 激活哪些配置项 -->
  <activeProfiles>
    <activeProfile>alwaysActiveProfile</activeProfile>
    <activeProfile>anotherAlwaysActiveProfile</activeProfile>
  </activeProfiles>
</settings>

除以上基础配置maven还有部署镜像等功能,可以通过插件进行配置

idea使用maven

  1. 配置即可使用
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X4nAqrdk-1688553045337)(image-5.png)]
  2. 创建常用项目
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MzRuTjsz-1688553045338)(image-7.png)]
  3. 创建Spring boot项目
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sxtr63WW-1688553045339)(image-5.png)]
    Profile>


    除以上基础配置maven还有部署镜像等功能,可以通过插件进行配置

idea使用maven

  1. 配置即可使用
    在这里插入图片描述

  2. 创建常用项目
    在这里插入图片描述

  3. 创建Spring boot项目
    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值