maven

Spring-boot:repackage 和 Maven package

1、概览 Apache Maven 是一种广泛使用的项目依赖管理工具和项目构建工具。 Spring Boot 通过 Spring Boot Maven Plugin 在 Apache Maven 中提供了对 Spring Boot 的支持。 众所周知,在 Maven 中可以使用 mvn package 将应用打包为 JAR 或 WAR 包。不过,Spring Boot Maven 插件额外添加了一个 repackage goal,也可以在 mvn 命令中调用。 有时,这两个 mvn 命令会让人混淆。本文将带你了解 mvn package 和 spring-boot:repackage 之间的区别。 2、Spring Boot 应用示例 首先,创建一个简单的 Spring Boot 应用作为示例: @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } 创建一个简单的 REST 端点来验证应用是否正常运行: @RestController public class DemoRestController { @GetMapping(value = "/welcome") public ResponseEntity welcomeEndpoint() { return ResponseEntity.

如何提高 Maven 的构建速度?

1、概览 在本教程中,我们将学习如何加快 Maven 的构建速度。我们将介绍各种优化构建时间的技术,并评述其优缺点。 2、常规建议 使用正确的 maven phase(阶段) 可以为我们节省大量时间。如果只需要编译代码,就没必要运行完整的 install,并且这会污染我们的本地仓库。 在多模块项目中,可以只重建已更改的模块和依赖于这些模块的模块。例如,如果我们只修改了 module1 和 module2,我们可以运行: $ mvn clean install -pl module1,module2 -am 3、使用多线程 默认情况下,Maven 构建在单线程中顺序运行。不过,如今所有电脑都有多核。让我们利用这一点,使用 -T 选项并行构建我们的模块: $ mvn clean install -T 1C -T 1C 表示 Maven 将在每个可用内核上使用一个线程。 -T 4 会强制 Maven 使用四个线程。 -T auto 会让 Maven 决定使用的线程数。 最后但并非最不重要的一点是,Maven Reactor 可确保所有相互依赖的模块按顺序运行。 4、测试优化 测试是软件开发的重要组成部分。然而,运行测试需要花费大量时间。 4.1、并行运行测试 默认情况下,Surefire 插件会按顺序运行单元测试。不过,我们可以将其配置为并行运行。例如,要并行运行所有测试套件,并在每个可用内核上使用一个线程,我们可以运行: mvn clean install -Dparallel=all -DperCoreThreadCount=true 但是,如果我们的项目中没有大量的单元测试,并行化的开销可能会导致更低的效率。 4.2、跳过测试执行 有时,我们并不需要在本地环境中运行测试。Maven -DskipTests 选项会跳过测试的执行,但仍会编译 test 文件夹: $ mvn clean install -DskipTests 在高度测试的项目中,当我们不需要测试时,跳过测试可以节省我们的时间!