使用 spring-boot 的 Maven 模块

     2023-02-26     186

关键词:

【中文标题】使用 spring-boot 的 Maven 模块【英文标题】:Maven module using spring-boot 【发布时间】:2014-01-10 22:35:14 【问题描述】:

我喜欢在 Maven 中通过创建模块来配置我的应用程序:

<groupId>com.app</groupId>
<artifactId>example-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

<modules>
    <module>app-api</module>
    <module>app-impl</module>
    <module>app-web</module>
</modules>

然后模块使用“example-app”作为父级。

现在我想为我的 Web 应用程序使用“spring-boot”。

有没有办法配置 maven,让我的“app-web”是一个 spring-boot 应用程序?

我面临的问题是您必须使用 spring-boot 作为父级。

【问题讨论】:

【参考方案1】:

您不必使用 spring-boot-starter-parent,它只是一种快速入门的方法。它提供的只是依赖管理和插件管理。你可以自己做,如果你想要一个中途步骤,你可以使用 spring-boot-dependencies(或等效的父级)来管理依赖项。为此,请像这样使用scope=import

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <type>pom</type>
            <version>1.0.2.RELEASE</version>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

【讨论】:

轻微编辑 - 你需要在 下添加一个 元素,否则它似乎也对我有用。 @Dave “或等效的父母”究竟是什么意思?你能把它也包括在例子中吗? 我的意思是(就dependencyManagement 而言)scope=import 或使用该POM 作为父级是等效的。 (当您将其用作父级时,您将获得其他功能,例如插件配置。) 当我将 spring-boot-starter-parent 的声明替换为“spring-boot-dependencies”工件时,我收到以下错误:在 target/my-app- 中没有主清单属性0.1.0.jar 是不是意味着我得把spring-boot-starter-parent里的所有插件都复制过来? 我猜这意味着你必须至少复制其中一个:-)。如果它是一个普通的 jar,那么可能只是 spring-boot 插件。【参考方案2】:

另一种选择是在父pom中包含spring boot的父声明,如post所示

示例应用 pom.xml:

<project>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.5.RELEASE</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    // rest of the example-app pom declarations
</project>

之后,在 poms 模块(app-web、app-impl 等)中,您将 example-app 声明为父级,但现在您可以像通常在常规项目中那样包含启动器依赖项。

app-web pom.xml:

<project>
    <parent>
        <groupId>org.demo</groupId>
        <artifactId>example-app</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <name>app-web</name>
    <artifactId>app-web</artifactId>
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>org.demo</groupId>
            <artifactId>app-api</artifactId>
            <version>1.0-SNAPSHOT</version> 
        </dependency>
        <dependency>
            <groupId>org.demo</groupId>
            <artifactId>app-impl</artifactId>
            <version>1.0-SNAPSHOT</version> 
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    // rest of the app-web pom declarations
</project>

关于版本管理,我在这些示例中使用的并不是最佳实践,但由于超出了问题的范围,我跳过了依赖管理和父属性的使用。

另外,如果每个模块都有一个starter,你可以在父pom中声明依赖,然后所有模块都会继承它(例如spring-boot-starter-test)

【讨论】:

spring-boot构建多模块项目

Spring-Boot构建多模块项目功能模块单独项目开发,可以将一个庞大的项目分解成多个小项目,便于细分开发 Maven多模块项目不能独立存在,必须有一个介质来包含。1.创建一个Maven项目,可以创建一个springboot项目作为基本框架... 查看详情

spring-boot构建多模块依赖工程时,maven打包异常:程序包xxx不存在

在qizhi项目改版的时候,所有代码都迁移好了,但是compile的时候报程序包*****不存在,具体到某一个类就是:找不到符号.下面这篇文章是正解http://hbxflihua.iteye.com/blog/2431537具体内容如下:===========================+===========================+========... 查看详情

将属性传递给 maven 子模块,该子模块没有当前模块作为父模块

...有几个maven项目:commons-lib(简单的Java项目)用户服务(Spring-Boot驱动的项目)复合服务(Spring-Boot驱动的项目)前端服 查看详情

spring-boot:多模块打包

<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!--指定该MainClass为全局的唯一入口--><mainClass> 查看详情

Spring-Boot 多模块项目加载属性文件

】Spring-Boot多模块项目加载属性文件【英文标题】:Spring-Bootmultimoduleprojectloadproperty-file【发布时间】:2018-03-2818:51:08【问题描述】:我在Maven中有一个Spring-Boot-Application作为多模块项目。结构如下:Parent-Project|--MainApplication|--Module... 查看详情

spring-boot使用main函数无法启动的问题完美解决方案。

...然太详细,完美的解决方案就是如下图所示,保留之前的Spring-boot配置,然后新建一个maven配置,并让maven配置运行spring-boot的配置。启动的时候选择maven配置就OK了。& 查看详情

Maven-在当前项目和插件组中找不到前缀“spring-boot”的插件

】Maven-在当前项目和插件组中找不到前缀“spring-boot”的插件【英文标题】:Maven-Nopluginfoundforprefix\'spring-boot\'inthecurrentprojectandintheplugingroups【发布时间】:2015-08-3113:55:14【问题描述】:我正在尝试构建一个使用SpringToolsSuite构建... 查看详情

Kotlin、Spring-boot 和 Maven:未解决的参考:SpringBootApplication

】Kotlin、Spring-boot和Maven:未解决的参考:SpringBootApplication【英文标题】:Kotlin,Spring-bootandMaven:Unresolvedreference:SpringBootApplication【发布时间】:2020-03-1213:30:30【问题描述】:我想使用SpringBoot编写一个Kotlin应用程序。我写了以下pom.x... 查看详情

使用 Maven 部署 Spring-Boot 项目并进一步将其导入其他项目

】使用Maven部署Spring-Boot项目并进一步将其导入其他项目【英文标题】:DeployingaSpring-BootprojectusingMavenandfurtherimportingitinotherprojects【发布时间】:2021-02-0917:33:51【问题描述】:所以目前,我有两个项目,比如说Storefront和Dashboard,... 查看详情

spring-boot Maven:如何使用主类创建可执行 jar?

】spring-bootMaven:如何使用主类创建可执行jar?【英文标题】:spring-bootMaven:Howtocreateexecutablejarwithmainclass?【发布时间】:2019-05-0404:52:06【问题描述】:最近,我编写了一个Spring-Boot项目,我希望Maven能够创建一个jar文件,我可以通... 查看详情

使用gradle BOM和spring-boot(多模块应用程序)哪种方式更好

】使用gradleBOM和spring-boot(多模块应用程序)哪种方式更好【英文标题】:WhatwayisbetterforusegradleBOMandspring-boot(multimodularapplication)【发布时间】:2019-08-2501:12:33【问题描述】:我使用Gradle来构建我的spring-boot应用程序。我想要什么... 查看详情

Gradle maven-publish 不构建独立的 spring-boot 应用程序

】Gradlemaven-publish不构建独立的spring-boot应用程序【英文标题】:Gradlemaven-publishdoesnotbuildstandalonespring-bootapplication【发布时间】:2014-11-3011:26:57【问题描述】:当我使用gradlebuild构建一个spring-boot应用程序(到一个独立的jar)时,... 查看详情

在黄瓜测试模块中使用主应用程序数据源 - Spring-boot 应用程序

】在黄瓜测试模块中使用主应用程序数据源-Spring-boot应用程序【英文标题】:Usemainapplicationdatasourceincucumbertestmodule-Spring-bootapplication【发布时间】:2020-12-1205:30:58【问题描述】:我试图在spring-boot应用程序的黄瓜测试模块中将数... 查看详情

如何使用 Netflix DGS graphql-dgs-extended-scalars JSON 标量(java/spring-boot,maven)?

】如何使用NetflixDGSgraphql-dgs-extended-scalarsJSON标量(java/spring-boot,maven)?【英文标题】:HowtouseNetflixDGSgraphql-dgs-extended-scalarsJSONscalar(java/spring-boot,maven)?【发布时间】:2021-12-2301:43:44【问题描述】:我遇到了我想使用graphql-dgs-extend 查看详情

使用 Spring-Boot 创建一个简单的 JAR 而不是可执行的 JAR

】使用Spring-Boot创建一个简单的JAR而不是可执行的JAR【英文标题】:CreateasimpleJARinsteadofanexecutableJARwithSpring-Boot【发布时间】:2016-11-1317:24:53【问题描述】:我遇到了多模块Spring-Boot应用程序的问题。我有一个用于服务的模块,即c... 查看详情

Spring-Boot 不适用于 Flyway

】Spring-Boot不适用于Flyway【英文标题】:Spring-BootisnotworkingwithFlyway【发布时间】:2015-04-1304:27:09【问题描述】:我正在为基于Spring的Web应用程序使用Spring-Bootv1.1.10.RELEASE。我的数据库是Postgres,并使用Flyway进行数据库迁移。postgress... 查看详情

聚合maven+spring-boot打包可执行jar

...效果吧         聚合maven+spring-boot的搭建很简单,和普通的聚合maven没有什么区别。聚合maven+spring-boot打包成可执行jar就不是那么容易了,主要是因为 查看详情

spring-boot+mybatis+maven+mysql搭建实例

转自:https://www.jianshu.com/p/95fb7be049ae最近读了spring-boot开发手册,spring-boot相比于spring-mvc封装了很多常用的依赖,并且内置了tomcat容器,启动生成的jar包即可启动项目,也是目前流行的微服务常用框架。本文主要用到了spring-boot,... 查看详情