Maven 学习笔记

方便第三方框架管理和便捷的项目构建过程

Maven项目目录

  • src
  • ----main
  • --------java
  • ------------package 主代码
  • ----test
  • --------package 测试代码
  • ----resouce
  • pom.xml

 

常用命令

-v 查看版本

-compile 编译

-package 打包

-clean 清楚target

-install 安装jar到本地仓库

 

自动创建目录

archetype插件:创建符合maven规定的目录的骨架

  1. 进入文件夹打开命令行
  2. 执行 mvn archetype:generate,输入 groupId、artifactId、version,按照提示进行选择
  3. 或者 mvn archetype:generate DgroupId=组织名,公司网址反写+项目名 DartifactId=项目名-模块名 -Dversion=版本号 -Dpackage=代码所存在的包 ,一次性设置完所有属性

 

坐标和仓库

坐标:项目的地址,如:groupId、artifactId、version

仓库:本地仓库、远程仓库,当本地仓库找不到需要的构件时,从远程仓库查找后再下载

默认全球仓库地址:apache-maven/bin/maven-model-builder.jar/org/apache/maven/model/pom.xml(超级pom,所有pom都继承它)

镜像仓库:A提供和B一样的功能,国内更稳定。修改为国内仓库,打开apache-maven/conf/settings.xml,找到mirror标签模板,复制出来修改为:

<mirror>

<id>maven.net.cn</id>

<mirrorOf>central</mirrorOf>

<name>central mirror in china</name>

<url>http://maven.net.cn/content/groups/public</url>

</mirror>

一旦指定镜像仓库,远程仓库将转到镜像仓库,原仓库不能直接访问

更改仓库位置:默认在用户目录中:用户名/.m2/repository。在settings.xml中localRepository标签,修改它为自定义位置。

 

IDE创建Maven项目

maven的jre应该与idejre都指定为jdk中jre,更改使用本地maven

 

Maven的生命周期和插件

完整的项目构建过程包括:清理、编译、测试、打包、集成测试、验证、部署

一、生命周期:maven创建了3套独立生命周期:1、clean 清理项目,2、default 构建项目,3、site 生成项目站点

1、clean 清理项目:

pre-clean 执行清理前工作

clean 清理上一次构建生成的所有文件

post-clean 执行清理后的文件

2、default 构建项目(核心):

compile test package install

执行后一个命令会自动执行前一个

3、site 生成项目站点:

pre-site 生成项目前要执行的操作

site 生成项目的站点文档

post-site 生成项目后要执行的操作

site-deploy 发布生成站点到服务器上

二、插件:maven官网有很多插件,网址:https://repo.maven.apache.org/maven2/

<build>

    <plugins>

        <plugin>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-source-plugin</artifactId>
            <version>2.8.2</version>

            <executions>

                <execution>

                    <phase>package</phase>

                    <source>jar-no-fork</source>

               </executios>

            </executions>

        </plugin>

    </plugins>

</bulid>

 

POM元素介绍

核心管理文件,用于项目描述、组织管理、依赖管理、构建信息管理

project:根元素

modelVersion:指定了pom版本

坐标信息:groupId:公司网址反写+项目名、artifackId:模块标识:项目名+模块名、version:版本号(1:大版本号,2、分支版本,3、小版本,snapshot快照、beta测试、Release稳定、GA正式版本)、packaging:打包方式,默认jar,可选war,zip,pom

name:项目描述名

url:项目地址

properties:变量

description:项目描述

licenses:许可证

organization:组织信息

依赖列表:dependencies>dependency:groupId、artifactId、version、type、scope依赖范围:test、optional:bealoon是否可选、exclusions>exclusion:排除排除以来列表(引入a包含cb,排除c)

依赖管理:dependencyManagement不会被引入实际,用于继承

build>plugins:插件列表

parent:子模块继承父模块

modules>module:指定多个模块一起编译

 

scope依赖范围

compile:默认范围,编译测试运行都有效

provided:测试和编译时有效,如:测试时加入servlet依赖,运行时若加入导致冲突

runtime:测试和运行时有效,如jdbc驱动时,只有在测试和运行时采用jdbc驱动

test:测试有效,junit

system:编译和测试有效,与本机系统相关,移植性差

import:导入依赖范围,只使用在dependencyManagement中,表示从其他pom中导入dependecy的配置,继承依赖

 

依赖传递

如有A、B、C三个项目,需要B引用A依赖,把A项目打包并安装到仓库,B中添加依赖。B再打包安装到仓库,把B的坐标添加到C中。

依赖具有传递性,若想C中想排除A则用exclusions>exclusion>坐标A。

 

Maven依赖JDK版本配置

在setting.xml中的profile中添加:
    <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>

 

依赖冲突

如有A和B依赖不同版本的构件,那么依赖对于ABC来说究竟依赖的是哪个版本构件

1、短路优先

A->B->C->X(jar)

A->D->X(jar)

优先使用路径短的版本

2、路径相同,先声明优先

 

聚合和继承

聚合:若想把多个项目安装到本地仓库中必须对其依次执行install,用聚合可以把多个一起执行。

创建1个新项目,pom文件中packaging值设置为pom,再加入modules>module标签>相对路径+项目文件名。

继承:若有多个项目引用相同依赖,可以创建一个parent项目,可以把test目录删除,在pom中修改packaging为pom,添加

<properties>

<变量名>值</变量名>

</properties>

<dependencyManagement>

    <!--添加共用依赖,放dependencyManagement中不会执行-->

   <dependecies>

      <dependecy>

         <groupId></groupId>

         <artifactId></artifactId>

         <version>${变量名}</version>

      </dependecy>

   </dependecies>

</dependencyManagement>

在引用的项目pom中使用parent标签,引入parent项目的坐标。

 

创建Web项目

使用webapp模板,目录为:

  • src
  • ----main
  • --------java
  • --------resouce
  • --------webapp
  • ------------WEB-INF
  • ----------------index.jsp
  • ----test
  • --------java
  • --------resouce
  • pom.xml

 在pom中添加servlet依赖:

   <dependecies>

      <dependecy>

         <groupId>javax.servlet</groupId>

         <artifactId>javax.servlet-api</artifactId>

         <version>3.0.1</version>

         <!--只在编译和测试中依赖-->

         <scope>provided</scope>

      </dependecy>

   </dependecies>

再确保输出output目录为target/classes中,再配置项目的test,使它在部署时不部署,最后用package打包成war包。

使用jetty运行应用

需要在build>plugins>plugin>jetty坐标,使用命令jetty:run,可添加:

<executions>

     <execution>

            <!--当打包成功后使用jetty:run运行jetty服务-->

            <phase>package</phase>

            <source>run</source>

    </executios>

</executions>

之后可用clean package命令打包,打包后自动运行服务器。

使用tomcat运行应用

进入tomcat官网打开Maven Plugin,选择版本,选择坐标,pom引入tomcat插件坐标,在build>plugins>plugin>tomcat坐标 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

amzpiper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值