Maven

2022-05-31  本文已影响0人  开心的小哈

什么是Maven?

Maven是一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model),一组标准集合,一个项目生命周期,一个依赖管理系统,和用来运行定义再生命周期阶段中插件目标的逻辑;

可以做到的功能

  1. 可以有效的管理jar包防止jar包冲突问题;
  2. maven可以自动编译,打包,运行,测试,部署可以管理项目的生命周期;

maven仓库及配置

  1. 本地仓库:第一次当代码需要仓库时,他会先找本地仓库,如果没有默认去中央仓库进行下载,第二次查找时如果本地有则会去本地仓库;
  2. 远程仓库:私服,如果配置了本次仓库开始找先从远程仓库找,如果没有则回去中央仓库找,找到下载jar包,本地再从中央仓库进行下载,好处:可以定义公司自定义的jar包;
  3. 中央仓库:它是由Maven团队自己维护,全球唯一的仓库(国外的),有全部开源的jar包;

Maven目录结构

Maven常用命令

  1. compile:,如果是javaee项目则会打包成war包,编译;
  2. test:
  3. clean:删除target目录等
  4. install:将项目安装到本地仓库;

Maven生命周期

同一套生命周期中,执行后边的操作,会自动执行前面所有操作;每一个生命周期命令都有相关插件执行;
maven的生命周期就是项目的生命周期,生命周期分为

  1. 在进行真正构建之前进行一些清理工作.Clean Lifecycle
  2. 编译->测试->打包->安装 默认生命周期-Default Lifecycle
  3. 生成项目报告,站点,发布站点-Site Lifecycle

IDEA中集成Maven环境,创建项目

  1. 配置Maven,file->Settings->
  2. new Module 选择Maven,其中可以选择Archetype模板,
  3. </packaging> 打包方式,默认是jar默认值,如果是web的则修改为war,还有一个pom方式注意的是如果war还需要安装下方插件不然会报错误:Cannot access defaults field of Properties
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.0</version>
      </plugin>
  1. 导入坐标依赖文件:dependencies中填写添加
     <dependencies>
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.11</version>
         <scope>test</scope>
       </dependency>
     </dependencies>
    
  2. 修改maven插件编译版本,IDEA按alt+insert可以选择插件的模板
     <build>
     <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
       <plugins>
         <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
         <plugin>
           <artifactId>maven-clean-plugin</artifactId>
           <version>3.1.0</version>
         </plugin>
         <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
         <plugin>
           <artifactId>maven-resources-plugin</artifactId>
           <version>3.0.2</version>
         </plugin>
         <plugin>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>3.8.0</version>
         </plugin>
         <plugin>
           <artifactId>maven-surefire-plugin</artifactId>
           <version>2.22.1</version>
         </plugin>
         <plugin>
           <artifactId>maven-jar-plugin</artifactId>
           <version>3.0.2</version>
         </plugin>
         <plugin>
           <artifactId>maven-install-plugin</artifactId>
           <version>2.5.2</version>
         </plugin>
         <plugin>
           <artifactId>maven-deploy-plugin</artifactId>
           <version>2.8.2</version>
         </plugin>
         <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
         <plugin>
           <artifactId>maven-site-plugin</artifactId>
           <version>3.7.1</version>
         </plugin>
         <plugin>
           <artifactId>maven-project-info-reports-plugin</artifactId>
           <version>3.0.0</version>
         </plugin>
       </plugins>
     </pluginManagement>
     </build>
    

maven默认编译版本为1.5,因为这是一个很古老的版本(过时),新项目开发不可能还会使用这么老的版本,所以在项目中需要做一些相关配置。
方式一:使用properties属性覆盖maven的默认配置。

<properties>
   <maven.compiler.source>1.8</maven.compiler.source>
   <maven.compiler.target>1.8</maven.compiler.target>
</properties>

方式二:在插件中指定.

<pluginManagement>
   <plugins>
       <plugin>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>3.1</version>
           <configuration>
             <source>1.8</source>
              <target>1.8</target>
           </configuration>
       </plugin>
   </plugins>
</pluginManagement>

Maven配置tomcat执行

Maven坐标

被Maven管理的资源的唯一标识,坐标一共有三部分构成

  1. groupId:组织名称
  2. atifactId:模块名称
  3. version:版本号

依赖

A依赖B,需要再A的pom.xml文件中添加B的坐标,添加坐标时需要指定依赖范围<scope>compile</scope>,依赖范围包括:

依赖范围 对于编译classpath有效(main/) 对于测试classpath有效(test/) 对于运行时classpath有效(war/jar/) 例子
compile Y Y Y jedis
test - Y - junit
provided Y Y - servlet-api
runtime - Y Y JDBC驱动
上一篇下一篇

猜你喜欢

热点阅读