Maven

作者: 开心的小哈 | 来源:发表于2022-05-31 22:31 被阅读0次

    什么是Maven?

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

    可以做到的功能

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

    maven仓库及配置

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

      1. 打开maven的C:\Users\sj176\apache-maven-3.8.5-bin\apache-maven-3.8.5\conf\settings.xml文件打开后配置
       Default: ${user.home}/.m2/repository
        <localRepository>/path/to/local/repo</localRepository>
        
      

      修改localRepository想要放置的目录即可;

    • 配置中央仓库镜像阿里
      由于外网访问较慢所以在这里配置了阿里的私服镜像可以加快jar包的下载速度
      阿里云地址

      <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
      </mirror>
      

      打开maven的C:\Users\sj176\apache-maven-3.8.5-bin\apache-maven-3.8.5\conf\settings.xml文件打开后配置
      将上述代码加入

      <mirrors></mirrors>
      

      放入后配置完成;

    Maven目录结构

    • src:源码
      • main:主工程代码
        • java:主工程代码
        • resources:主公程需要使用的文件
        • webapp:web项目的资源目录(jsp/html/WEB-INF./classes,lib),注意只有web项目才会有webapp目录,普通的java项目是没有的;
      • test:测试代码
        • java:测试代码
        • resources:测试需要使用的配置文件
    • pom.xml:项目的核心配置文件

    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. org.apache.maven.archetypes:maven-archetype-webapp 为webapp的架构
      2. org.apache.maven.archetypes:maven-archetype-quickstart java项目
    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驱动

    相关文章

      网友评论

          本文标题:Maven

          本文链接:https://www.haomeiwen.com/subject/vzsaprtx.html