Maven3 常用功能使用笔记

Java开发中常用是maven来管理jar包依赖、构建项目;
使用maven开发项目时可能需要处理的问题:修改镜像、升级依赖jar的版本、解决jar包冲突、多模块项目依赖的统一管理,构建项目等;
更多功能使用可查看maven官网;

windos安装和配置maven

这一步非必须,idea自带的maven插件也能开发项目;

  • 官网下载zip包: https://maven.apache.org/download.cgi 如apache-maven-3.9.2-bin.zip

  • 下载之后解压到非中文、没有空格的目录;

  • 可在conf/settings.xml文件中修改默认本地仓库:
    <localRepository>D:\mavenRepo</localRepository>

  • 修改使用阿里云的镜像仓库(也可能用公司提供的镜像仓库):

<mirror>
	<id>nexus-aliyun</id>
	<mirrorOf>central</mirrorOf>
	<name>Nexus aliyun</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
  • 配置系统变量MAVEN_HOME(值是maven安装目录)、环境变量PATH中加入 %MAVEN_HOME%\bin;

  • 通过 mvn -v 验证;

构建的各个环节

  • 清理clean:将以前编译得到的旧文件class字节码文件删除

  • 编译compile:将java源程序编译成class字节码文件

  • 测试test:自动测试,自动调用junit程序

  • 报告site: 用标准格式记录和显示测试结果;

  • 打包package:动态Web工程打War包,java工程打jar包

  • 安装install:Maven特定的概念-----将打包得到的文件复制到“仓库”中的指定位置

  • 部署deploy:将动态Web工程生成的war包复制到Servlet容器下,使其可以运行 作者:

实际使用中,用的最多就是:mvn clean package ;

有时候看到 package -f pom.xml ,这是指定哪一个pom.xml,一般一个服务模块就一个pom,所以平时无需指定;

jar 包管理

(1)一般引入依赖:

<!-- SpringMVC -->
<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-webmvc</artifactId>
   <version>5.2.9.RELEASE</version>
</dependency>

(2)多模块项目,注意统一依赖版本;

(3)移除jar中的某项子依赖:使用 exclusions;

(4)pom中打包配置有三种方式:pom、jar、war

pom是多模块项目中的父工程使用,jar打包后可用于发布或依赖,war是打包后发布的;

<packaging>war</packaging>

(5)scope 取值范围:

scope有以下6个取值:

  • compile: 编译范围,缺省值,适用于所有阶段,项目测试、打包发布期间都有效

  • provided: 已提供范围,该依赖包已经由目标容器(如tomcat)和JDK提供,只在编译环境下有效,打包时不会加入,如servlet-api和jsp-api等jar

  • test: 测试范围,只在测试环境下使用,用于编译和运行测试代码,项目打包时不会加入,如junit

  • runtime: 运行范围,运行和测试环境使用,编译时不用加入classpath,打包时候会加入

  • system: 系统范围,与provided 类似,但是你必须显式的提供一个对于本地系统中JAR 文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分

  • import: import 依赖范围使用要求,打包类型必须是 pom,必须放在 dependencyManagement 中

(6)pom中配置插件:

如screw 数据库文档生成工具插件:

<build>
    <plugins>
        <plugin>
            <groupId>cn.smallbun.screw</groupId>
            <artifactId>screw-maven-plugin</artifactId>
            <version>${lastVersion}</version>
            <dependencies>
                <!-- HikariCP -->
                <dependency>
                    <groupId>com.zaxxer</groupId>
                    <artifactId>HikariCP</artifactId>
                    <version>3.4.5</version>
                </dependency>
                <!--mysql driver-->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>8.0.20</version>
                </dependency>
            </dependencies>
            <configuration>
                <!--username-->
                <username>****</username>
                <!--password-->
                <password>****</password>
                <!--driver-->
                <driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
                <!--jdbc url-->
                <jdbcUrl>jdbc:mysql://127.0.0.1:3306/****</jdbcUrl>
                <!--生成文件类型 文件类型:WORD为doc文档,MD为Markdown文档,HTML则为HTML的网页格式-->
                <fileType>HTML</fileType>
                <!--打开文件输出目录-->
                <openOutputDir>false</openOutputDir>
                <!--生成模板-->
                <produceType>freemarker</produceType>
                <!--文档名称 为空时:将采用[数据库名称-描述-版本号]作为文档名称-->
                <fileName>测试文档名称</fileName>
                <!--描述-->
                <description>数据库文档生成</description>
                <!--版本-->
                <version>${project.version}</version>
                <!--标题-->
                <title>数据库文档</title>
            </configuration>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

(7) 在哪里搜索要使用的jar包呢?

(8) IDEA 的 Maven Helper 插件,方便查看处理依赖冲突;

(9) IDEA 中修改maven配置,Setting->Build…->Build Tools->maven:

在这里插入图片描述


菜鸟教程:https://www.runoob.com/maven/maven-tutorial.html
maven官方文档:https://maven.apache.org/index.html

多模块的项目,要配置为父子工程模式,模块之间不要循环依赖;

关于打包方式,父工程用pom,非发布模块如common用jar,用于发布服务的模块用war,springboot可用jar

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值