Maven参考文档

一、Maven简介

Apache Maven 是一个项目管理工具,可以对 Java 项目进行自动化的构建和依赖管理
Maven 官网地址是:https://maven.apache.org/index.html

1、Maven 仓库有三种类型:

  • 本地仓库(local):顾名思义就是本地本机放置构件的地方。Maven 从远程仓库下载下来的构件都存放在本地仓库中,项目可以从本地 Maven 仓库中获取自己所依赖的文件。
  • 中央仓库(central):Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。中央仓库是 Maven 官方提供的,可通过 http://search.maven.org/ 来访问。
  • 远程私服(remote):私服一般是指公司内部使用的仓库。运行 Maven 时,Maven 所需要的任何构件都是从本地仓库获取的,但是如果本地仓库没有,它就会尝试从远程仓库中下载构件到本地仓库。如果 Maven 无法连接到远程仓库,将无法正常构建项目

2、Maven 依赖搜索顺序

当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:

  • 步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
  • 步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
  • 步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
  • 步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。

3、Maven 中央仓库地址大全

1、阿里中央仓库

<repository>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>

2、maven.apache.org 中央仓库

<repository>
    <id>central-repos</id>
    <name>Central Repository</name>
    <url>https://repo.maven.apache.org/maven2</url>
</repository>

3、spring.io 中央仓库

<repository>
    <id>springsource-repos</id>
    <name>SpringSource Repository</name>
    <url>http://repo.spring.io/release/</url>
</repository>

4、Maven 标准项目目录示意图

在这里插入图片描述

5、Maven依赖冲突调解规则

第一原则:路径最近者优先

把当前模块当作顶层模块,直接依赖的包则作为次层模块,间接依赖的包则作为次层模块的次层模块,依次递推…,最后构成一棵引用依赖树。假设当前模块是A,两种依赖路径如下所示:

第二原则:第一声明者优先

若冲突依赖的路径长度相同,那么第一原则就无法起作用了。假设当前模块是A,两种依赖路径如下所示:

其它情况:覆盖策略

若相同类型但版本不同的依赖存在于同一个 pom 文件,依赖调解两大原则都不起作用,需要采用覆盖策略来调解依赖冲突,最终会引入最后一个声明的依赖。

二、常用命令

命令格式: mvn [plugin-name]:[goal-name]

-D 指定参数,如 -Dmaven.test.skip=true 跳过单元测试;
-P 指定 Profile 配置,可以用于区分环境;
-e 显示maven运行出错的信息;
-o 离线执行命令,即不去远程仓库更新包;
-X 显示maven允许的debug信息;
-U 强制去远程更新snapshot的插件或依赖,默认每天只更新一次。
命令说明
mvn archetype:create创建maven项目
指定 group: -DgroupId=packageName
指定 artifact:-DartifactId=projectName
创建web项目:-DarchetypeArtifactId=maven-archetype-webapp
mvn archetype:generate创建maven项目
mvn validate验证项目是否正确
mvn packagemaven 打包
mvn package -DskipTests打包不执行测试用例
mvn package -Dmaven.test.skip=true打包不执行编译测试用例
mvn jar:jar只打jar包
mvn source:jar生成源码jar包
mvn generate-sources产生应用需要的任何额外的源代码
mvn compile编译源代码
mvn test-compile编译测试代码
mvn test运行测试
mvn verify运行检查
mvn clean清理maven项目
mvn eclipse:eclipse生成eclipse项目
mvn eclipse:clean清理eclipse配置
mvn idea:idea生成idea项目
mvn install安装项目到本地仓库
mvn:deploy发布项目到远程仓库
mvn integration-test在集成测试可以运行的环境中处理和发布包
mvn dependency:tree显示maven依赖树
mvn dependency:list显示maven依赖列表
mvn dependency:sources下载依赖包的源码
mvn install:install-file -DgroupId=packageName -DartifactId=projectName -Dversion=version -Dpackaging=jar -Dfile=path安装本地jar到本地仓库
mvn archetype:helparchetype帮助命令
mvn archetype:crawl爬取一个maven仓库,创建目录文件
mvn archetype:create-from-project根据一个工程,创建一个新的archetype
mvn archetype:generate根据一个archetype,创建一个新的工程
mvn archetype:jar根据当前的archetype工程,创建一个jar包
mvn archetype:update-local-catalog更新本地的maven目录
mvn dependency:sources -DdownloadSources=true -DdownloadJavadocs=true下载源码和文档

三、web项目相关命令

命令说明
mvn tomcat:run启动tomcat
mvn jetty:run启动jetty
mvn tomcat:deploy运行打包部署
mvn tomcat:undeploy撤销部署
mvn tomcat:start启动web应用
mvn tomcat:stop停止web应用
mvn tomcat:redeploy重新部署
mvn war:exploded tomcat:exploded部署展开的war文件

四、问题集合

1、maven 创建SpringMVC慢的解决方案

archetypeCatalog: internal
在这里插入图片描述

2、setting.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<settings> 
<localRepository>[本地路径]/.m2/repository</localRepository>
    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
  <profiles>
    <profile>
       <id>nexus</id> 
        <repositories>
            <repository>
                <id>nexus</id>
                <name>local private nexus</name>
                <url>http://maven.oschina.net/content/groups/public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
        </repositories>
        
        <pluginRepositories>
            <pluginRepository>
            <id>nexus</id>
            <name>local private nexus</name>
            <url>http://maven.oschina.net/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>
</profiles>
</settings>

3、内置Tomcat插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <!-- 指定端口 -->
        <port>80</port>
        <!-- 请求路径 -->
        <path>/</path>
    </configuration>
</plugin>
  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值