Maven: 让你的编译和打包自动化

简介: Maven: 让你的编译和打包自动化

 插件篇

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>

image.gif

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>

image.gif

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

maven多模块项目结构示例


image.gif20201121092556268.png

父工程的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>

image.gif

输出效果

在父工程下,执行

mvn clean package -Dmaven.test.skip=true
image.gif

20201121092422660.png

image.gif

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(插件注册表)里的配置;
目录
相关文章
|
12天前
|
存储 Shell Linux
快速上手基于 BaGet 的脚本自动化构建 .net 应用打包
本文介绍了如何使用脚本自动化构建 `.net` 应用的 `nuget` 包并推送到指定服务仓库。首先概述了 `BaGet`——一个开源、轻量级且高性能的 `NuGet` 服务器,支持多种存储后端及配置选项。接着详细描述了 `BaGet` 的安装、配置及使用方法,并提供了 `PowerShell` 和 `Bash` 脚本实例,用于自动化推送 `.nupkg` 文件。最后总结了 `BaGet` 的优势及其在实际部署中的便捷性。
45 10
|
3月前
|
Java 测试技术 Maven
Maven打包使用多线程加速构建过程
Maven打包使用多线程加速构建过程
458 0
|
29天前
|
Java Maven 容器
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
使用IntelliJ IDEA的Artifacts功能,可以将项目依赖的第三方jar包打包进jar文件中,实现双击jar包即可直接运行。
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
|
29天前
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
38 1
|
2月前
|
Java Maven
Maven 自动化构建
**Maven自动化构建确保依赖稳定性。当bus-core-api(1.0-SNAPSHOT)构建后,app-web-ui和app-desktop-ui这两个依赖它的项目自动触发构建。app-web-ui与app-desktop-ui均依赖bus-core-api的1.0快照版本。**
|
2月前
|
自然语言处理 Java Maven
Maven 自动化构建
Maven自动化构建确保依赖稳定性。`bus-core-api(1.0-SNAPSHOT)`构建后,自动触发`app-web-ui`和`app-desktop-ui`的构建,两者均依赖bus-core-api的1.0快照版。 ``` 纯文本摘要: Maven自动化构建保证依赖项的稳定性:当`bus-core-api`的1.0-SNAPSHOT版本完成构建时,它会触发依赖它的`app-web-ui`和`app-desktop-ui`项目的构建,这两个项目都依赖`bus-core-api`的相同版本。
|
2月前
|
Java API Maven
Maven 自动化构建
**摘要 (Markdown 格式)**: Maven自动化构建确保依赖稳定性。当`bus-core-api` (1.0-SNAPSHOT) 构建后,依赖它的`app-web-ui`和`app-desktop-ui`(均依赖bus-core-api的1.0快照)会自动触发构建,保证与最新核心API兼容。
|
2月前
|
Java Maven
Maven 自动化构建
**Maven自动化构建确保依赖稳定性:** 当`bus-core-api`(1.0-SNAPSHOT)构建后,依赖它的`app-web-ui`和`app-desktop-ui`自动触发构建。`app-web-ui`与`app-desktop-ui`都引用`bus-core-api`的1.0快照版本,实现版本同步。
|
2月前
|
Java Maven 编译器
Java编译器注解运行和自动生成代码问题之Maven编译时设置生成的源码的文件夹路径问题如何解决
Java编译器注解运行和自动生成代码问题之Maven编译时设置生成的源码的文件夹路径问题如何解决
|
3月前
|
Java Maven
Maven 自动化构建
**Maven自动化构建确保依赖稳定性。当bus-core-api(1.0-SNAPSHOT)构建完成后,app-web-ui和app-desktop-ui这两个依赖它的项目自动触发构建,维持版本协调。**