Maven快速入门

maven安装

  • 去官网下载安装包
  • 解压所下载文件,例如解压到:D:\apache-maven-3.5.0
  • 配置Maven环境变量
    在windows系统中,添加如下变量
a. MAVEN_HOME : D:\apache-maven-3.5.0
b. PATH : %MAVEN_HOME%\bin;
c. MAVEN_OPTS : -Xms128m -Xmx512m -Duser.language=zh -Dfile.encoding=UTF-8

通常需要设置MAVEN_OPTS的值为-Xms128m -Xmx512m,因为Java默认的最大可用内存往往不能够满足Maven运行的需要,比如在项目较大时,使用Maven生成项目站点需要占用大量的内存,如果没有该配置,则很容易得到java.lang.OutOfMemeoryError。因此,一开始就配置该变量是推荐的做法。

  • 测试安装配置是否正确
    重新打开windows控制台,输入
mvn -version

出现mvn版本即说明安装成功

maven配置文件

默认全局配置文件地址:maven安装路径\conf\settings.xml

  • 配置本地仓库
    默认的本地仓库地址是 C:\Users\用户.m2\repository 目录。可以通过编辑settings.xml文件修改这个仓库地址。
<localRepository>D:\maven\repository</localRepository>
  • 配置远程仓库
    修改下载服务器的镜像地址: 有时候我们不能连接到默认的下载服务器或速度很慢,可以通过修改这个部分来解决。 找到 mirrors 部分,然后修改就可以了。例如修改为阿里云的镜像如下配置即可。
 <mirrors>
     <mirror>
        <id>alimaven</id>
        <mirrorOf>central</mirrorOf>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
    </mirror>
</mirrors>

maven常用命令

mvn archetype:create 创建maven项目
mvn compile 编译项目
mvn deploy 发布项目
mvn package 打包项目
mvn test 运行测试代码
mvn site 生成项目相关信息的网站
mvn clean 清除之前编译和打包产生的文件
mvn install 将项目安装到本地仓库

聚合与继承

聚合

将多个项目一起编译,这种方式叫做聚合。
假设有A、B、C三个项目,A依赖于B、C两个项目,三者设定了传递依赖关系,但是此时不想一个一个的由高到低的编译/打包/安装。此时可以在A的pom.xml文件的根目录中加入如下元素标签,只需要对A进行打包安装即可实现对B和C的打包和安装,这种一同编译安装的方式,就叫做聚合。

<modules>
    <module>../C</module>
    <module>../B</module>
</modules> 
继承

同样以A、B、C三个项目为例,A、B、C都有junit的依赖,但是每个pom.xml都要配置junit很麻烦了,这时候可以创建一个P,使得P拥有Junit的依赖,然后让A、B、C三个项目继承P即可。
P的pom.xml配置Junit

<groupId>cn.hewie</groupId>
<artifactId>maven-p</artifactId>
<version>0.0.1SANPSHOT</version>
<properties>
    <junit-version>3.1.8</junit-version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit-version}</version>
        </dependency>
    </dependencies> 
</dependencyManagement>

A,B,C的pom.xml配置

<parent>
    <groupId>cn.hewie</groupId>
    <artifactId>maven-p</artifactId>
    <version>0.0.1SANPSHOT</version>
</parent>

这样A,B,C就不用每个都配置Junit了,光继承P就可以了。

scope标签

scope在maven的依赖管理中主要负责项目的依赖管理,确认每个包的作用范围。

maven的哲学:约定大于配置,所以在maven中,很多内容都有默认值,scope的默认值是compile,那么scope还能有哪些选项呢?

scope的分类
  1. compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试、运行,是一个比较强的依赖。打包的时候通常需要包含进去
  2. test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit
  3. runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段
  4. provided:打包的时候可以不用包进去,别的包会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作
  5. system:从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径

pom.xml常见配置解析

以下以一个演示pom举例

<?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">
    <!-- 指定了当前POM的版本 -->
    <modelVersion>4.0.0</modelVersion>

    <!-- 项目坐标 -->
    <groupId>cn.hewie</groupId><!-- 反写的公司网址 -->
    <artifactId>study</artifactId><!-- 一般是项目名+模块名  如 mcloud.db -->
    <version>1.0-SNAPSHOT</version><!-- 大版本号.分支版本号.小版本号  snapshot 快照  alpha内测  beta公测  release稳定版  GA正式发布版本 -->

    <!-- 聚合项目 -->
    <modules>
        <module>
            ../A
        </module>
    </modules>

    <!-- 属性信息 -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <junit.version>4.12</junit.version>
    </properties>

    <!-- 项目依赖列表属性 -->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <!-- version配置在properties属性中,此处为4.12 -->
            <version>${junit.version}</version>
            <!-- scope指定项目依赖阶段 -->
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <!-- 插件列表 -->
        <pluginManagement>
            <plugins>
                <plugin>
                    <!-- 插件项目坐标 -->
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <!-- tomcat插件具体信息配置 -->
                    <configuration>
                        <path>/</path>
                        <port>8080</port>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hober.z

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

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

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

打赏作者

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

抵扣说明:

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

余额充值