二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • 最佳实践

  • 迎刃而解

  • Nginx

  • Php

  • Zabbix

  • AWS

  • Prometheus

  • Grafana

  • Loki

  • CentOS

  • Supervisord

  • Systemd

  • Docker

  • Docker-Compose

  • Rancher

  • Ansible

  • OpenLdap

  • GitLab

  • GitHub

  • Etcd

  • Consul

  • RabbitMQ

  • Kafka

  • Mysql

  • MongoDB

  • OpenVPN

  • Kvm

  • VMware

  • 配置文件详解

  • Other

    • 整理蓝鲸社区版3-X部署文档
    • 关于开源堡垒机jumpserver_1-2的一些体验记录
    • 防火墙基础知识之SNAT详解
    • 关于easyops的社区版与正式版两者体验之思考
    • DELL R430服务器做raid以及安装操作系统过程
    • CentOS系统安装之后的优化
    • 如何快速的批量配置某台主机对多台主机免密码登陆
    • Python-2-7的安装
    • pinpoint安装流程
    • CentOS7上Python-3-6的安装
    • 记录我与maven的故事三则
    • tomcat默认日志优化处理
    • Maven 基础知识大全汇总整理
      • 1,常用参数整理。
      • 2,其他参数介绍。
        • 1. -D 传入属性参数
        • 2. -P 使用指定的 Profile 配置
      • 3,maven 的使用。
      • 4,maven 的核心插件介绍。
    • 会话管理工具tmux整理
    • 使用pure-ftpd搭建ftp服务
    • 简单快速部署轻量Git服务器gogs
    • 使用athens部署企业内部Gitlab包的私服代理
    • 快速部署cerebro-v0-9-4监控es集群状态
    • 使用transfer部署一个内网上传程序
    • 认识并使用一个透明代理http-server
  • 运维观止
  • Other
二丫讲梵
2018-09-20
目录

Maven 基础知识大全汇总整理

文章发布较早,内容可能过时,阅读注意甄别。

作为开发利器的 maven,为我们提供了十分丰富的命令,了解 maven 的命令行操作并熟练运用常见的 maven 命令还是十分必要的。无论多先进多炫的图形化界面,底层都得靠 maven 命令来驱动。知其然,知其所以然,方能百战不殆。

# 1,常用参数整理。

常用命令参数汇总整理:

命令参数 备注
mvn -v —version 显示版本信息
mvn -V –show-version 显示版本信息后继续执行 Maven 其他目标;
mvn -h –help 显示帮助信息;
mvn -e –errors 控制 Maven 的日志级别, 产生执行错误相关消息;
mvn -X –debug 控制 Maven 的日志级别, 产生执行调试信息;
mvn -q –quiet 控制 Maven 的日志级别, 仅仅显示错误;
mvn -Pxxx 激活 id 为 xxx 的 profile (如有多个,用逗号隔开);
mvn -Dxxx=yyy 指定 Java 全局属性;
mvn -o –offline 运行 offline 模式, 不联网更新依赖;
mvn -N —non-recursive 仅在当前项目 (opens new window)模块执行命令, 不构建子模块;
mvn -pl –module_name 在指定模块上执行命令;
mvn -ff –fail-fast 遇到构建失败就直接退出;
mvn -fn –fail-never 无论项目结果如何, 构建从不失败;
mvn -fae –fail-at-end 仅影响构建结果, 允许不受影响的构建继续;
mvn -C –strict-checksums 如果校验码不匹配的话, 构建失败;
mvn -c –lax-checksums 如果校验码不匹配的话, 产生告警;
mvn -U 强制更新 snapshot 类型的插件或依赖库 (否则 maven 一天只会更新一次 snapshot 依赖);
mvn -npu –no-plugin-s 对任何相关的注册插件, 不进行最新检查 (使用该选项使 Maven 表现出稳定行为,该稳定行为基于本地仓库当前可用的所有插件版本);
mvn -cpu –check-plugin-updates 对任何相关的注册插件, 强制进行最新检查 (即使项目 POM 里明确规定了 Maven 插件版本, 还是会强制更新);
mvn -up –update-plugins [mvn -cpu] 的同义词;
mvn -B –batch-mode 在非交互(批处理)模式下运行 (该模式下, 当 Mven 需要输入时, 它不会停下来接受用户的输入, 而是使用合理的默认值);
mvn -f –file <file> 强制使用备用的 POM 文件;
mvn -s –settings <arg> 用户配置文件的备用路径;
mvn -gs –global-settings <file> 全局配置文件的备用路径;
mvn -emp –encrypt-master-password <password> 加密主安全密码, 存储到 Maven settings 文件里;
mvn -ep –encrypt-password <password> 加密服务器密码, 存储到 Maven settings 文件里;
mvn -npr –no-plugin-registry 对插件版本不使用~/.m2/plugin-registry.xml(插件注册表) 里的配置;

# 2,其他参数介绍。

# 1. -D 传入属性参数

比如命令:

mvn package -Dmaven.test.skip=true
1

以 “-D”开头,意思是将“maven.test.skip”的值设为“true”, 就是告诉 maven 打包的时候跳过单元测试。同理,“mvn deploy -Dmaven.test.skip=true” 代表部署项目并跳过单元测试。

# 2. -P 使用指定的 Profile 配置

比如项目开发需要有多个环境,一般为开发,测试,预发,正式 4 个环境,在 pom.xml 中的配置如下:

<profiles>
      <profile>
             <id>dev</id>
             <properties>
                    <env>dev</env>
             </properties>
             <activation>
                    <activeByDefault>true</activeByDefault>
             </activation>
      </profile>
      <profile>
             <id>qa</id>
             <properties>
                    <env>qa</env>
             </properties>
      </profile>
      <profile>
             <id>pre</id>
             <properties>
                    <env>pre</env>
             </properties>
      </profile>
      <profile>
             <id>prod</id>
             <properties>
                    <env>prod</env>
             </properties>
      </profile>
</profiles>

......

<build>
      <filters>
             <filter>config/${env}.properties</filter>
      </filters>
      <resources>
             <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
             </resource>
      </resources>

      ......

</build>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

profiles 定义了各个环境的变量 id,filters 中定义了变量配置文件的地址,其中地址中的环境变量就是上面 profile 中定义的值,resources 中是定义哪些目录下的文件会被配置文件中定义的变量替换。

通过 maven 可以实现按不同环境进行打包部署,命令为:

mvn package -P dev
1

其中 “dev“为环境的变量id, 代表使用 Id 为 “dev” 的 profile。

# 3,maven 的使用。

我们已经知道 maven 预定义了许多的阶段(phase),每个插件都依附于这些阶段,并且在进入某个阶段的时候,调用运行这些相关插件的功能。我们先来看完整的 maven 生命周期:

生命周期:

生命周期 阶段描述
validate 验证项目是否正确,以及所有为了完整构建必要的信息是否可用
generate-sources 验证项目是否正确,以及所有为了完整构建必要的信息是否可用
process-sources 处理源代码,比如过滤一些值
generate-resources 生成所有需要包含在打包过程中的资源文件
process-resources 复制并处理资源文件至目标目录,准备打包
compile 编译项目的源代码
process-classes 后处理编译生成的文件,例如对 Java 类进行字节码增强(bytecode enhancement)
process-classes 生成所有包含在测试编译过程中的测试源码
process-test-sources 处理测试源码,比如过滤一些值
process-test-sources 生成测试需要的资源文件
process-test-resources 复制并处理测试资源文件至测试目标目录
process-test-resources 编译测试源码至测试目标目录
test 使用合适的单元测试框架运行测试。这些测试应该不需要代码被打包或发布
prepare-package 在真正的打包之前,执行一些准备打包必要的操作。这通常会产生一个包的展开的处理过的版本(将会在 Maven 2.1 + 中实现)
package 将编译好的代码打包成可分发的格式,如 JAR,WAR,或者 EAR
pre-integration-test 执行一些在集成测试运行之前需要的动作。如建立集成测试需要的环境
integration-test 如果有必要的话,处理包并发布至集成测试可以运行的环境
integration-test 执行一些在集成测试运行之后需要的动作。如清理集成测试环境
verify 执行所有检查,验证包是有效的,符合质量规范
install 执行所有检查,验证包是有效的,符合质量规范
deploy 复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关)

# 4,maven 的核心插件介绍。

maven 核心的插件列表可以参考 http://maven.apache.org/plugins/index.html 。这里仅列举几个常用的插件及其配置参数:

clean插件

只包含一个 goal 叫做 clean:clean ,负责清理构建时候创建的文件。默认清理的位置是如下几个变量指定的路径:project.build.directory, project.build.outputDirectory,project.build.testOutputDirectory, and project.reporting.outputDirectory 。

compiler 插件

包含 2 个 goal,分别是 compiler:compile 和 compiler:testCompile 。可以到这里查看两者的具体参数设置:compile , testCompile 。

surefire插件

运行单元测试用例的插件,并且能够生成报表。包含一个 goal 为 surefire:test 。主要参数 testSourceDirectory 用来指定测试用例目录,参考完整用法帮助

jar

负责将工程输出打包到 jar 文件中。包含两个 goal,分别是 jar:jar, jar:test-jar 。两个 goal 负责从 classesDirectory 或 testClassesDirectory 中获取所有资源,然后输出 jar 文件到 outputDirectory 中。

war

负责打包成 war 文件。常用 goal 有 war:war ,负责从 warSourceDirectory(默认 ${basedir}/src/main/webapp)打包所有资源到 outputDirectory 中。

resources

负责复制各种资源文件,常用 goal 有 resources:resources ,负责将资源文件复制到 outputDirectory 中,默认为 ${project.build.outputDirectory}。

install

负责将项目输出 (install:install) 或者某个指定的文件 (install:install-file) 加入到本机库 %USERPROFILE%/.m2/repository 中。可以用 install:help 寻求帮助。

deploy

负责将项目输出 (deploy:deploy) 或者某个指定的文件 (deploy:deploy-file) 加入到公司库中。

site

将工程所有文档生成网站,生成的网站界面默认和 apache 的项目站点类似,但是其文档用 doxia 格式写的,目前不支持 docbook,需要用其他插件配合才能支持。需要指出的是,在 maven 2.x 系列中和 maven3.x 的 site 命令处理是不同的,在旧版本中,用 mvn site 命令可以生成 reporting 节点中的所有报表,但是在 maven3 中,reporting 过时了,要把这些内容作为 maven-site-plugin 的 configuration 的内容才行。详细内容可以参考 http://www.wakaleo.com/blog/292-site-generation-in-maven-3

参考如下地址并整理:

https://blog.csdn.net/makyan/article/details/51723294 https://blog.csdn.net/u012152619/article/details/51473410# http://www.cnblogs.com/951106Nancy/p/9355448.html

微信 支付宝
上次更新: 2024/06/13, 22:13:45
tomcat默认日志优化处理
会话管理工具tmux整理

← tomcat默认日志优化处理 会话管理工具tmux整理→

最近更新
01
睡着的人不关灯
06-12
02
学习周刊-总第215期-2025年第24周
06-12
03
学习周刊-总第214期-2025年第23周
06-05
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式