插件篇

1. Maven中指定Java的编译版本和源文件编码方式

Maven默认编译版本是JDK1.5,在很多时候,发现有些代码报错,又找不到原因,很有可能是没有配置JDK版本。就如有一次我遇到的问题:定义全局异常处理类继承HandlerInterceptorAdapter时候,preHandle方法上面有@Override就一直报错,点开HandlerInterceptorAdapter源码,明显是有这个方法,后来发现JDK版本的问题,按如下方法设置好后,错误解决了。

1. 1 第一种方式

在项目的pom.xml文件中指定,但是此方法只对该项目有效,如下图红框所示,设置为JDK1.8。


<build>
        <plugins>
            <!-- 设置JDK版本 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

1. 2 第二种方式

在maven安装目录的conf文件夹下,修改settings.xml文件,在profiles节点里添加如下设置,如下图所示,设置为JDK1.8,此方法对所有Maven项目有效。

<profile>
        <id>JDK1.8</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <encoding>UTF-8</encoding>
        </properties>
</profile>

2.  maven 多模块打包,jar包和war输出到指定文件夹

maven多模块项目结构示例

父工程的pom中添加spring-boot-maven-plugin 的 outputDirectory


<properties>
    <!-- properties中定义jar包的保存路径-->
    <project.jar.output.directory>D:\JT\java\workspace\webvr-end\deploy</project.jar.output.directory>
</properties>
  
<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!-- 文件名以及输出路径-->
                <configuration>
                <!-- 1.0.5表示版本号-->
                    <finalName>${project.artifactId}-1.0.5</finalName>
                    <outputDirectory>${project.jar.output.directory}</outputDirectory>
                </configuration>
            </plugin>
            <!-- 跳过启动测试 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

输出效果

在父工程下,执行


mvn clean package -Dmaven.test.skip=true



MVN命令

1. 常用命令

执行效果

命令

参数解释

Maven强制更新依赖

mvn clean install -e -U

-e详细异常,-U强制更新

2. 命令参数解释

命令参数

备注

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 仅在当前项目模块执行命令,不构建子模块;

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(插件注册表)里的配置;