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

目录
相关文章
|
2月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
62 2
|
3月前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
277 1
Maven——创建 Spring Boot项目
|
3月前
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
72 1
如何使用 maven 创建一个 Spring Boot项目
|
3月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
111 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
Java Maven Android开发
【Azure Developer】VS Code打包Java maven Project 遇见 BUILD FAILURE
Unknown lifecycle phase "lean". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
|
2月前
|
Java 持续交付 项目管理
使用Maven进行项目管理:提高Java Web开发的效率
Maven 是一款强大的项目管理和构建自动化工具,广泛应用于Java社区。它通过依赖管理、构建生命周期管理、插件机制和多模块项目支持等功能,简化了项目的构建过程,提高了开发效率。本文将介绍Maven的核心功能及其在Java Web开发中的应用。
80 0
|
3月前
|
Java Shell Maven
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
180 4
|
3月前
|
Java 应用服务中间件 Maven
idea+maven+tomcat+spring 创建一个jsp项目
这篇文章介绍了如何在IntelliJ IDEA中使用Maven和Tomcat创建一个JSP项目,包括配置Maven依赖、设置Tomcat服务器、编写JSP页面、创建控制器和配置文件,以及项目的运行结果。
274 0
idea+maven+tomcat+spring 创建一个jsp项目
|
3月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
100 2
|
3月前
|
Java 应用服务中间件 Maven
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
399 0