Maven 用法总结
Maven运行参数
运行VM参数
-Xms128m -Xmx256m -Xmn32m -XX:PermSize=32M -XX:MaxPermSize=256m
Xms
和Xmx
:程序运行进程堆内存能占用的最小大小和最大大小;Xmn
:用来设置堆内新生代的大小。通过这个值我们也可以得到老生代的大小:-Xmx
减去-Xmn
;Xss
:设置每个线程可使用的内存大小XX:PermSize
和XX:MaxPermSize
:设置永久代的最小大小和最大大小。注意:Java 8移除该参数,而是用本地元空间Metaspace,大小由-XX:MetaspaceSize
和-XX:MaxMetaspaceSize
进行设置。
常规参数
-o
:是否离线-U
:是否更新Snapshots-X -e
:Debug Output-DskipTests=true
:编译test,但是忽略允许test(compiles the tests, but skips running them)-Dmaven.test.skip=true
:是否忽略test(skips compiling the tests and does not run them)
命令参数 | 命令全称 | 备注 |
---|---|---|
mvn -am | --also-make | 表示同时处理选定模块所依赖的模块 |
mvn -amd | --also-make-dependents | 表示同时处理依赖选定模块的模块 |
mvn -B | --batch-mode | 在非交互(批处理)模式下运行(该模式下,当Mven需要输入时,它不会停下来接受用户的输入,而是使用合理的默认值) |
mvn -b | --builder | 设置build构建时的参数 |
mvn -C | --strict-checksums | 如果校验码不匹配的话,构建失败 |
mvn -c | --lax-checksums | 如果校验码不匹配的话,产生告警 |
mvn -cpu | --check-plugin-updates | 对任何相关的注册插件,强制进行最新检查(无效,只保留向后兼容) |
mvn -D | --define | 定义系统属性 |
mvn -e | --errors | 控制Maven的日志级别,产生执行错误相关消息 |
mvn -emp | --encrypt-master-password | 加密主安全密码,存储到Maven settings文件里 |
mvn -ep | --encrypt-password | 加密服务器密码,存储到Maven settings文件里 |
mvn -f | --file | 强制使用备用的POM文件(或者目录下的pom.xml) |
mvn -fae | --fail-at-end | 仅影响构建结果,允许不受影响的构建继续 |
mvn -ff | --fail-fast | 遇到构建失败就直接退出 |
mvn -fn | --fail-never | 无论项目结果如何,构建从不失败 |
mvn -gs | --global-settings | 全局配置文件的备用路径 |
mvn -gt | --global-toolchains | 全局构建链文件的备用路径 |
mvn -h | --help | 显示帮助信息 |
mvn -l | --log-file | 设置构建输出的日志文件(禁用输出颜色) |
mvn -llr | --legacy-local-repository | 使用Maven 2遗留的本地存储库行为,即不使用_remote. Repository。也可以使用-Dmaven.legacyLocalRepo=true来激活 |
mvn -N | --non-recursive | 不递归到子项目中 |
mvn -npr | --no-plugin-registry | 无效,只保留向后兼容 |
mvn -npu | --no-plugin-updates | 无效,只保留向后兼容 |
mvn -o | --offline | 离线模式 |
mvn -P | --activate-profiles | 激活的profile,如果多个以逗号分隔 |
mvn -pl | --projects | 选项后可跟随{groupId}:{artifactId}或者所选模块的相对路径(多个模块以逗号分隔) |
mvn -q | --quiet | 静默输出,仅显示错误信息 |
mvn -rf | --resume-from | 表示从指定模块开始继续处理 |
mvn -s | --settings | 用户设置文件的替代路径 |
mvn -t | --toolchains | 用户构建链文件的备用路径 |
mvn -T | --threads | 构建的线程数 |
mvn -U | --update-snapshots | 强制更新snapshot类型的插件或依赖库(否则maven一天只会更新一次snapshot依赖) |
mvn -up | --update-plugins | 无效,只保留向后兼容 |
mvn -v | --version | 显示版本信息 |
mvn -V | --show-version | 显示版本信息后继续执行Maven其他目标 |
mvn -X | --debug | 控制Maven的日志级别,产生执行调试信息 |
打包成可执行jar
方法一:maven-jar-plugin
和maven-dependency-plugin
插件
<groupId>your-groupid</groupId>
<artifactId>your-artifactid</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<compilerVersion>${maven.compiler.compilerVersion}</compilerVersion>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>libs/</classpathPrefix>
<mainClass>your.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/libs</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
maven-jar-plugin
插件
配置mainClass
和指定classpath
addClasspath: 是否在manifest文件中添加classpath。默认为false。如果为true,则会在manifest文件中添加classpath,这样在启动的时候就不用再手动指定classpath了。如下所示,文件中增加了Class-Path
一行
maven-dependency-plugin
插件
将所依赖的jar
包复制到指定目录。
# 打包
mvn package
# 启动
java -jar your-target.jar
方法二:maven-assembly-plugin
插件
<groupId>your-groupid</groupId>
<artifactId>your-artifactid</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<compilerVersion>${maven.compiler.compilerVersion}</compilerVersion>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>your.MainClass</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
maven-assembly-plugin
插件
将所有的东西都打包到一个jar包中。
mvn package
打包完成后,会在target文件夹下生成两个jar包,一个是不带依赖的jar包,一个是后缀有-dependencies
带有依赖的jar包
# 打包
mvn package
# 启动
java -jar your-target-dependencies.jar
常用插件
Jetty
- 指定端口:
-Djetty.port=xxx
(更改xxx设置为自定义端口,比如:8081)
换个标题更合适