前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【工具系列】常用maven命令介绍

【工具系列】常用maven命令介绍

作者头像
框架师
发布2022-03-08 18:12:15
8660
发布2022-03-08 18:12:15
举报
文章被收录于专栏:墨白的Java基地墨白的Java基地

前言:

一般情况下是用不到这些命令的,因为 idea 集成 maven 后,可以直接在 idea 进行 maven 的操作,只是最近不是换了 mvnd 了嘛,所以需要使用到 maven 命令,发现很多都忘记了,在这里重新记录下。

语法格式

代码语言:javascript
复制
# maven 命令格式
$ mvn [plugin-name]:[gloal-name]

可接受的常用参数有以下内容

代码语言:javascript
复制
-D 指定参数,如 -Dmaven.test.skip=true 跳过单元测试;

-P 指定 Profile 配置,可以用于区分环境;

-e 显示maven运行出错的信息;

-o 离线执行命令,即不去远程仓库更新包;

-X 显示maven允许的debug信息;

-U 强制去远程更新snapshot的插件或依赖,默认每天只更新一次。

更多参数

代码语言:javascript
复制
$ mvn -help
usage: mvn [options] [<goal(s)>] [<phase(s)>]

Options:
 -am,--also-make                        If project list is specified, also
                                        build projects required by the
                                        list
 -amd,--also-make-dependents            If project list is specified, also
                                        build projects that depend on
                                        projects on the list
 -B,--batch-mode                        Run in non-interactive (batch)
                                        mode (disables output color)
 -b,--builder <arg>                     The id of the build strategy to
                                        use
 -C,--strict-checksums                  Fail the build if checksums don't
                                        match
 -c,--lax-checksums                     Warn if checksums don't match
    --color <arg>                       Defines the color mode of the
                                        output. Supported are 'auto',
                                        'always', 'never'.
 -cpu,--check-plugin-updates            Ineffective, only kept for
                                        backward compatibility
 -D,--define <arg>                      Define a system property
 -e,--errors                            Produce execution error messages
 -emp,--encrypt-master-password <arg>   Encrypt master security password
 -ep,--encrypt-password <arg>           Encrypt server password
 -f,--file <arg>                        Force the use of an alternate POM
                                        file (or directory with pom.xml)
 -fae,--fail-at-end                     Only fail the build afterwards;
                                        allow all non-impacted builds to
                                        continue
 -ff,--fail-fast                        Stop at first failure in
                                        reactorized builds
 -fn,--fail-never                       NEVER fail the build, regardless
                                        of project result
 -gs,--global-settings <arg>            Alternate path for the global
                                        settings file
 -gt,--global-toolchains <arg>          Alternate path for the global
                                        toolchains file
 -h,--help                              Display help information
 -l,--log-file <arg>                    Log file where all build output
                                        will go (disables output color)
 -llr,--legacy-local-repository         Use Maven 2 Legacy Local
                                        Repository behaviour, ie no use of
                                        _remote.repositories. Can also be
                                        activated by using
                                        -Dmaven.legacyLocalRepo=true
 -N,--non-recursive                     Do not recurse into sub-projects
 -npr,--no-plugin-registry              Ineffective, only kept for
                                        backward compatibility
 -npu,--no-plugin-updates               Ineffective, only kept for
                                        backward compatibility
 -nsu,--no-snapshot-updates             Suppress SNAPSHOT updates
 -ntp,--no-transfer-progress            Do not display transfer progress
                                        when downloading or uploading
 -o,--offline                           Work offline
 -P,--activate-profiles <arg>           Comma-delimited list of profiles
                                        to activate
 -pl,--projects <arg>                   Comma-delimited list of specified
                                        reactor projects to build instead
                                        of all projects. A project can be
                                        specified by [groupId]:artifactId
                                        or by its relative path
 -q,--quiet                             Quiet output - only show errors
 -rf,--resume-from <arg>                Resume reactor from specified
                                        project
 -s,--settings <arg>                    Alternate path for the user
                                        settings file
 -t,--toolchains <arg>                  Alternate path for the user
                                        toolchains file
 -T,--threads <arg>                     Thread count, for instance 2.0C
                                        where C is core multiplied
 -U,--update-snapshots                  Forces a check for missing
                                        releases and updated snapshots on
                                        remote repositories
 -up,--update-plugins                   Ineffective, only kept for
                                        backward compatibility
 -v,--version                           Display version information
 -V,--show-version                      Display version information
                                        WITHOUT stopping build
 -X,--debug                             Produce execution debug output

常用命令

  • 指定端口
代码语言:javascript
复制
-Dmaven.tomcat.port=9090
  • 指定 group
代码语言:javascript
复制
-DgroupId=packageName
  • 指定 artifact:
代码语言:javascript
复制
-DartifactId=projectName
  • 创建web项目
代码语言:javascript
复制
-DarchetypeArtifactId=maven-archetype-webapp
  • 忽略测试失败
代码语言:javascript
复制
-Dmaven.test.failure.ignore=true
  • 创建 maven 项目
代码语言:javascript
复制
$ mvn archetype:create
  • 反向生成 maven 项目的骨架
代码语言:javascript
复制
$ mvn archetype:generate
  • 只打包不测试
代码语言:javascript
复制
$ mvn -Dtest package
  • 显示详细错误信息
代码语言:javascript
复制
$ mvn -e
  • 验证项目是否正确
代码语言:javascript
复制
$ mvn validate
  • maven 打包
代码语言:javascript
复制
$ mvn package
  • 只打jar包
代码语言:javascript
复制
$ mvn jar:jar
  • 生成源码jar包
代码语言:javascript
复制
$ mvn source:jar
  • 产生应用需要的任何额外的源代码
代码语言:javascript
复制
$ mvn generate-sources
  • 编译源代码
代码语言:javascript
复制
$ mvn compile
  • 编译测试代码
代码语言:javascript
复制
$ mvn test-compile
  • 运行测试
代码语言:javascript
复制
$ mvn test
  • 运行检查
代码语言:javascript
复制
$ mvn verify
  • 清理maven项目
代码语言:javascript
复制
$ mvn clean
  • 生成eclipse项目
代码语言:javascript
复制
$ mvn eclipse:eclipse
  • 清理eclipse配置
代码语言:javascript
复制
$ mvn eclipse:clean
  • 生成idea项目
代码语言:javascript
复制
$ mvn idea:idea
  • 安装项目到本地仓库
代码语言:javascript
复制
$ mvn install
  • 发布项目到远程仓库
代码语言:javascript
复制
$ mvn:deploy
  • 在集成测试可以运行的环境中处理和发布包:
代码语言:javascript
复制
$ mvn integration-test
  • 显示maven依赖树
代码语言:javascript
复制
$ mvn dependency:tree
  • 显示maven依赖列表
代码语言:javascript
复制
$ mvn dependency:list
  • 下载依赖包的源码
代码语言:javascript
复制
$ mvn dependency:sources
  • 安装本地jar到本地仓库:
代码语言:javascript
复制
$ mvn install:install-file 
-DgroupId=packageName 
-DartifactId=projectName 
-Dversion=version 
-Dpackaging=jar 
-Dfile=path

Web 相关命令

  • 启动tomcat:
代码语言:javascript
复制
$ mvn tomcat:run
  • 启动jetty
代码语言:javascript
复制
$ mvn jetty:run
  • 运行打包部署
代码语言:javascript
复制
$ mvn tomcat:deploy
  • 撤销部署
代码语言:javascript
复制
$ mvn tomcat:undeploy
  • 启动web应用
代码语言:javascript
复制
$ mvn tomcat:start
  • 停止web应用
代码语言:javascript
复制
$ mvn tomcat:stop
  • 重新部署
代码语言:javascript
复制
$ mvn tomcat:redeploy
  • 部署展开的war文件
代码语言:javascript
复制
$ mvn war:exploded tomcat:exploded

常用 Maven 镜像源

  • Maven 官网
代码语言:javascript
复制
https://maven.apache.org/
  • 阿里云
代码语言:javascript
复制
http://maven.aliyun.com/nexus/content/groups/public/
  • 阿里云
代码语言:javascript
复制
http://maven.aliyun.com/nexus/content/groups/public/
  • Spring
代码语言:javascript
复制
http://repo.spring.io/libs-milestone-local
  • spring.io
代码语言:javascript
复制
https://repo.spring.io/libs-release-local
  • 华为
代码语言:javascript
复制
https://mirrors.huaweicloud.com/repository/maven/
  • 网易
代码语言:javascript
复制
http://mirrors.163.com/maven/repository/maven-public/
  • 腾讯
代码语言:javascript
复制
http://mirrors.cloud.tencent.com/nexus/repository/maven-public/
  • 开源中国
代码语言:javascript
复制
http://maven.oschina.net/content/groups/public/

maven 依赖查询

  • 官网
代码语言:javascript
复制
https://mvnrepository.com/

打包命令

  • 清理之前项目生成结果并构建然后将依赖包安装到本地仓库跳过测试
代码语言:javascript
复制
$ mvn clean  install package -Dmaven.test.skip=true
  • 构建并将依赖放入私有仓库
代码语言:javascript
复制
$ mvn clean deploy package  -Dmaven.test.skip=true
  • 指定maven配置文件构建
代码语言:javascript
复制
$ mvn --settings /data/settings.xml clean package -Dmaven.test.skip=true

打包配置 pom.xml

  • 配置打包的 jar 包名称,在 build 下配置
代码语言:javascript
复制
<finalName>jarname</finalName>
  • 指定打包的jar存放位置
代码语言:javascript
复制
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <!-- 指定生成Jar包的路径 -->
        <outputDirectory>./../deployment/lib</outputDirectory>
    </configuration>
    <executions>
        <execution>
            <goals>
                <!--可以把依赖的包都打包到生成的Jar包中-->
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>
  • 排除测试类对打包的干扰
代码语言:javascript
复制
<plugin>
    <!-- 排除测试类对打包的干扰 -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <testFailureIgnore>true</testFailureIgnore>
    </configuration>
</plugin>
  • lib 和 应用程序 class 打包分离

使用 SpringBoot 的过程中,发布到生产环境的网速受限,如果每次将80,100M甚至更大的jar包上传,速度太慢了,采取jar包和配置文件分离的方式可以极大的压缩jar包大小,至于依赖的jar包则只需要上传一次,后期增加了jar包则将jar包加入到jar包文件夹内就可以了。配置文件也是一样,每次修改了才需要修改服务器文件,如果只是单纯的代码更新,我们直接打包上传源码jar包就可以了。直接上maven pom.xml build配置。

代码语言:javascript
复制
<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/**/**/**/mapper/*.xml</include>
            </includes>
        </resource>
    </resources>
    <plugins>
        <!--打包jar start 分开依赖jar,和配置文件-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <!--不打包资源文件-->
                <excludes>
                    <exclude>*.**</exclude>
                    <exclude>*/*.xml</exclude>
                </excludes>
                <archive>
                    <manifest>
                        <!--添加这一项配置 ,即可解决-->
                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        <!--添加这一项配置 ,即可解决  end-->
                        <addClasspath>true</addClasspath>
                        <!--MANIFEST.MF 中 Class-Path 加入前缀-->
                        <classpathPrefix>lib/</classpathPrefix>
                        <!--jar包不包含唯一版本标识-->
                        <useUniqueVersions>false</useUniqueVersions>
                        <!--指定入口类-->
                        <mainClass>com.mobaijun.kjs_generator.KjsGeneratorApplication</mainClass>
                    </manifest>
                    <manifestEntries>
                        <!--MANIFEST.MF 中 Class-Path 加入资源文件目录-->
                        <Class-Path>./resources/</Class-Path>
                    </manifestEntries>
                </archive>
                <outputDirectory>${project.build.directory}</outputDirectory>
            </configuration>
        </plugin>
        <!--拷贝依赖 copy-dependencies-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/lib/</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <!--拷贝资源文件 copy-resources-->
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <resources>
                            <resource>
                                <directory>src/main/resources</directory>
                            </resource>
                        </resources>
                        <outputDirectory>${project.build.directory}/resources</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <!--spring boot repackage,依赖 maven-jar-plugin 打包的jar包 重新打包成 spring boot 的jar包-->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!--重写包含依赖,包含不存在的依赖,jar里没有pom里的依赖-->
                <includes>
                    <include>
                        <groupId>null</groupId>
                        <artifactId>null</artifactId>
                    </include>
                </includes>
                <layout>ZIP</layout>
                <!--使用外部配置文件,jar包里没有资源文件-->
                <addResources>true</addResources>
                <outputDirectory>${project.build.directory}</outputDirectory>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <!--配置jar包特殊标识 配置后,保留原文件,生成新文件 *-run.jar -->
                        <!--配置jar包特殊标识 不配置,原文件命名为 *.jar.original,生成新文件 *.jar -->
                        <classifier>run</classifier>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <!--打包jar end-->
    </plugins>
</build>
  • 将打包目录下的 resources 文件夹和lib 文件夹,以及打包的 jar 放在同一路径后,使用如下命令启动jar包即可运行
  • 启动命令需要携带lib路径参数
代码语言:javascript
复制
$ java -Dloader.path=D:\lib -jar *.jar

参考文章:

Spring Boot 打包,分离依赖jar,配置文件 · 76号地精

这 30 个常用的 Maven 命令你必须熟悉! - Java技术栈 - 博客园

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • 语法格式
  • 更多参数
  • 常用命令
  • Web 相关命令
  • 常用 Maven 镜像源
  • maven 依赖查询
  • 打包命令
  • 打包配置 pom.xml
  • 参考文章:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档