当前位置: 首页 > 知识库问答 >
问题:

Maven和弹性引导:如何在弹性引导上指定配置文件:重新包装

陆烨磊
2023-03-14

通过spring boot,我知道我可以拥有配置文件,并根据活动配置文件使用不同的配置文件。例如命令:

msgstr"mvn弹性引导:运行-Drun.profiles=默认,生产"

将使用“application default.properties”和“application production.properties”中定义的设置运行我的spring boot应用程序,第二个文件上的设置将覆盖第一个文件中定义的相同设置(例如db connection settings)。所有这些目前运行良好。

但是,我想构建我的spring boot应用程序,并使用以下命令生成一个可运行的jar:

"mvn包sping-start: repack".

这个命令确实很好地生成了自包含的可运行的jar。问题是,我如何用前一个命令指定活动配置文件?我已经使用了

mvn package spring boot:重新打包-Drun.profiles=默认,生产

但它不起作用。

共有2个答案

甄佐
2023-03-14

Spring配置文件是针对应用程序运行时的。它们不像Maven配置文件那样在打包应用程序时运行。所以你必须在启动应用程序时使用它们,而不是打包它。

然而,如果你想生成不同的包,每个包都有一些默认的配置文件,你可以使用Maven资源过滤。毕竟,使用Maven构建Spring Boot可运行jar的方法是遵循标准过程,因此需要使用Spring Boot Maven插件:

mvn clean install -PproductionMvnProfile

另见:

  • Maven型材还是Spring型材?
公西星海
2023-03-14

我在这篇文章中回答了同样的问题:在maven构建中传递Spring配置文件,但我将在这里再次重复答案。

如果有人有同样的情况,要使用特定的配置文件运行Spring引导可运行的jar或war,您需要在默认application.properties文件中显示属性spring.profiles.active,以便在生成工件时动态更改其值,您可以这样做:

首先在spring属性或yaml文件中,添加spring。个人资料。以其值作为占位符处于活动状态:

spring.profiles.active=@active.profile@

其次,用maven传递值:

mvn clean package spring-boot:repackage -Dactive.profile=dev

或者,如果Spring启动插件已经出现在您的pom中,如下所示:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

您可以运行以下命令:

mvn干净包active.profile

当jar/war打包时,值将被设置为dev。

您还可以利用maven配置文件的使用:

<profiles>
        <profile>
            <id>dev</id>
            <properties>
                <active.profile>dev</active.profile>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <active.profile>prod</active.profile>
            </properties>
        </profile>
    </profiles>

然后运行:

mvn clean install -Pdev

您不需要传递两个属性文件(默认和dev/prod),默认情况下是应用程序中的变量。属性将首先执行。

 类似资料:
  • 我编写了一个reindex方法,可以执行以下操作: 它确实起到了作用,但我现在确定,仅仅删除然后创建一个索引是否有意义。如何改进此方法?

  • 我正在尝试使用python应用程序(基于django)进行测试,以便能够将事务跟踪推送到Elastic APM,稍后可以使用OpenDistro Elastic中的跟踪分析工具查看。 我试过以下方法 方法1: 然后,在文件中,我添加了以下代码,以直接将跟踪发送到弹性APM。 运行代码时,出现以下错误: 方法2: 由于方法1不起作用,我尝试在两者之间使用OpenTelemetry Collector

  • 问题内容: 我正在动态列表上使用TwitterBootstrap的弹出窗口。列表项有一个按钮,当我单击该按钮时,它将显示弹出窗口。当我在非动态环境下进行测试时,它可以正常工作。 这是我的非动态列表JavaScript 但是,它在动态列表上效果不佳。当我单击“两次”按钮时,它可以显示,并且仅显示我单击第一时间的列表项之一。 我的HTML: 我的动态JavaScript: 我已经搜索过类似的问题,但是

  • 我在elastic beanstalk上使用django进行开发,我想对apache配置做两个更改: 1.将www.domain.com重定向到domain.com 2.将http://domain.com重定向到https://domain.com 有人知道如何在弹性豆茎中添加重写吗?

  • 我是弹性搜索新手,并且已经完成了类似mykong教程的基本教程 我对创建任何文档的一部分有疑问 创建操作示例插入包含 /mkyong/posts/1001和以下请求数据的新文档: 问题1:-ES是否会在上述文档的所有属性上创建反向索引,即默认情况下的标题/类别/已发布/作者,并提供全文搜索,还是需要明确提及? 问题2:-在上述示例中,我们已经有了唯一的\u id,即。如果我已经将其存储在DB中并生

  • 我有一个spring boot应用程序,它使用本地弹性搜索和spring boot执行器2.1.2仅用于度量目的。现在我需要实现一个默认的健康检查,所以我在配置application.properties类中打开了它,如下所示: 它工作得很好,我可以使用调用http://localhost/acturet/health的默认实现来实现健康状态。 我能不能只禁用这个电话?