Java-SpringBoot-11-Spring Boot Maven Plugin-02

简介: 在不继承spring-boot-starter-parent新建一个SpringBoot项目时,可以还可以使用import范围限定的依赖项来保留依赖项管理:

在不继承spring-boot-starter-parent新建一个SpringBoot项目时,可以还可以使用import范围限定的依赖项来保留依赖项管理:

<dependencyManagement><dependencies><dependency><!--ImportdependencymanagementfromSpringBoot--><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.5.0-RC1</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

我们看到很多时候是没有这个 <dependencyManagement> 标签的,这个标签只是对版本进行管理,不会实际引入jar。

image.png

此时好奇一个问题,就去网上查了查,这么回答的:

maven中的 dependencies 和 dependencyManagement 有啥区别呢?

       dependencymanagement 里面的只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖。而dependencies相对于dependencymanagement,所有声明在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。

       maven 使用dependencymanagement 元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父pom中看到dependencymanagement 元素。使用pom.xml 中的dependencymanagement 元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。maven 会沿着父子层次向上走,直到找到一个拥有dependencymanagement 元素的项目,然后它就会使用在这个dependencymanagement 元素中指定的版本号。

       比如我们在项目中需要引入一个框架A的jar包:a.jar。而A框架的作者为了实现A框架又在其pom里面引入了spring框架,那么问题就来了,如果我们的项目也要用到spring框架,那spring框架的版本应该以谁的为准呢?

这可能就是dependencyManagement的作用了,你可以在dependencyManagement中对spring进行版本声明,然后你在dependencies中添加对A框架的引用,那么实际引入的spring版本就是你在dependencyManagement中声明的版本了。


自定义属性、默认值以及在命令行上覆盖属性

       Spring Boot Maven Plugin 提供了许多以spring-boot开头的用户属性,也叫Goals,也可以理解为功能命令。可让您从命令行中自定义配置。

       格式就是 mvn 加上以spring-boot开头的命令,然后在-D后面跟上要覆盖的参数。

例如,您可以调整配置文件以在运行应用程序时启用,如下所示:

$mvnspring-boot:run-Dspring-boot.run.profiles=dev,local

如果要在允许它们在命令行上覆盖的同时都具有默认值,则应结合使用用户提供的项目属性和或者自定义MOJO配置。

       这里说的自定义属性配置,就是我们在pom文件的 <properties>标签中的属性,这里既可以配置系统属性、也可以自定义属性来让下面引用,引用语法为:${app.profiles}

<properties><java.version>1.8</java.version><app.profiles>local,dev</app.profiles></properties>

例如:

<project><properties><app.profiles>local,dev</app.profiles></properties><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><profiles>${app.profiles}</profiles></configuration></plugin></plugins></build></project>

上面的命令可以确保local和dev默认情况下处于启用状态。现在公开了一个专用属性,也可以在命令行中覆盖它:

$mvnspring-boot:run-Dapp.profiles=test

命令行直接 -Dapp.profiles = test 就把默认的local,dev 改成了test


以spring-boot开头的命令:

spring-boot:build-image使用buildpack将应用程序打包到OCI映像中。spring-boot:build-info根据当前MavenProject内容生成build-info.properties文件。spring-boot:help在spring-boot-maven-plugin上显示帮助信息。调用mvnspring-boot:help-Ddetail=true-Dgoal=<goal-name>以显示参数详细信息。spring-boot:repackage重新打包现有的JAR和WAR归档文件,以便可以使用命令行从命令行执行它们mvnspring-boot:help-Ddetail=true-Dgoal=<goal-name>也可以简单地用于打包具有嵌套依赖关系的JAR(并且没有主类,因此不是可执行文件)。spring-boot:run在适当位置运行应用程序。spring-boot:start启动spring应用程序。与run目标相反,这不会阻止并允许其他目标在应用程序上运行。此目标通常用于集成测试方案中,在该方案中,应用程序在测试套件之前启动,然后在测试套件之后停止。spring-boot:stop停止已通过“启动”目标启动的应用程序。通常在测试套件完成后调用。

END

目录
相关文章
|
3天前
|
Java Maven
SpringBoot项目的用maven插件打包报Test错误
SpringBoot项目的用maven插件打包报Test错误
|
4天前
|
Java Maven 开发者
Java一分钟之-Maven项目管理工具使用
【5月更文挑战第15天】Maven是Java开发的项目管理工具,用于自动化构建、依赖管理和项目信息管理。通过POM模型管理项目,依赖中央仓库。基本目录包括`src/main/java`、`src/main/resources`、`src/test/java`和`src/test/resources`。常用命令有`clean`、`compile`、`test`、`package`和`install`。面对依赖冲突、找不到依赖或编译错误,可以调整`pom.xml`或`settings.xml`。理解Maven的工作原理和解决常见问题能提升开发效率。
17 0
|
4天前
|
存储 Java Maven
Maven 构建 Java 项目
使用 Maven 的 `maven-archetype-quickstart` 插件在 `C:\MVN` 创建 Java 应用项目 `consumerBanking`,命令行参数包括 `-DgroupId`, `-DartifactId` 和 `-DarchetypeArtifactId`。项目包含 src/main/java 和 src/test/java 目录,分别存放 Java 代码和测试代码,以及 src/main/resources 用于存储资源文件。默认生成的 `App.java` 和 `AppTest.java` 分别为应用主类和测试类。
|
4天前
|
数据采集 前端开发 Java
Java医院绩效考核系统源码maven+Visual Studio Code一体化人力资源saas平台系统源码
医院绩效解决方案包括医院绩效管理(BSC)、综合奖金核算(RBRVS),涵盖从绩效方案的咨询与定制、数据采集、绩效考核及反馈、绩效奖金核算到科到组、分配到员工个人全流程绩效管理;将医院、科室、医护人员利益绑定;全面激活人才活力;兼顾质量和效益、长期与短期利益;助力医院降本增效,持续改善、优化收入、成本结构。
19 0
|
4天前
|
Java Maven
Maven 构建 Java 项目
使用Maven的`maven-archetype-quickstart`插件在C:\MVN下创建Java应用,命令包括`groupId`, `artifactId`, 和 `archetypeArtifactId`参数。生成的项目包含src/main/java和src/test/java目录,分别用于存放源代码和测试代码,还有src/main/resources用于资源文件。默认提供App.java主类和AppTest.java测试类。按照预设结构组织文件,Maven将自动管理构建过程。
|
4天前
|
Java 测试技术 项目管理
Java基础教程(22)-构建工具Maven的基本使用
【4月更文挑战第22天】Maven是Java项目管理及构建工具,简化构建、测试、打包和部署等任务。遵循约定优于配置原则,核心是`pom.xml`配置文件,用于管理依赖和项目信息。安装涉及下载、解压、配置环境变量。在IDEA中使用Maven创建项目,通过`pom.xml`添加依赖和管理版本。常用命令包括`clean`、`compile`、`test`、`package`、`install`和`deploy`。IDEA支持直接执行这些命令。
|
4天前
|
Java Maven Kotlin
[AIGC] 请你写一遍博客介绍 “使用idea+kotinlin+springboot+maven 结合开发一个简单的接口“,输出markdown格式,用中文回答,请尽可能详细
[AIGC] 请你写一遍博客介绍 “使用idea+kotinlin+springboot+maven 结合开发一个简单的接口“,输出markdown格式,用中文回答,请尽可能详细
|
4天前
|
安全 Java 应用服务中间件
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
33 0
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
|
4天前
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
【Spring系列】Sping VS Sping Boot区别与联系
|
4天前
|
Java Apache 项目管理
使用Maven进行Java项目构建与依赖管理
【4月更文挑战第16天】Apache Maven是Java项目的核心构建工具,它基于POM进行项目管理和构建自动化,简化构建过程并管理依赖。Maven提供标准化的目录结构、自动依赖解决、丰富的插件生态、多模块构建支持和版本管理功能。通过安装Maven、创建项目、配置依赖、构建及使用插件,开发者能高效管理Java项目,提升开发效率。了解和掌握Maven对于Java开发者至关重要。

推荐镜像

更多