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

spring boot配置文件同步maven配置文件

田昊天
2023-03-14

我有spring boot的申请。我需要将spring boot配置文件连接到maven配置文件,所以当我调用命令时

mvn clean install -Pdev 

mvn clean install -Pprod

它应该调用spring boot加载application-dev.yml或application-prod.yml。当我打电话的时候

mvn clean install

它应该在启动之前调用application-dev.yml文件。因此需要从2个命令调用spring boot开发配置文件。我有一个问题,每次我切换配置文件,它从默认配置文件构建应用程序。所以你能帮我把maven和spring boot的资料。这是我的pom.xml

    <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
                <profiles>${spring-profiles}</profiles>
            </configuration>
        </plugin>
    </plugins>
</build>
<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <spring-profiles>dev</spring-profiles>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <spring-profiles>prod</spring-profiles>
        </properties>
    </profile>
</profiles>

下面是application.yml示例。

spring:
devtools:
    restart :
        enabled: true
    livereload:
        enabled: false  
datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    database: MYSQL
    show_sql: true
    properties:
        hibernate.cache.use_second_level_cache: true
        hibernate.cache.use_query_cache: false
        hibernate.generate_statistics: true
        hibernate.cache.region.factory_class: org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
    hibernate:
        ddl-auto: update


server:
port: 8080
compression:
  enabled: true
  mime-types : application/json,application/xml,text/html,text/xml,text/plain,application/javascript,text/css,text/html
session :
  timeout : 540000
mail:
smtp:
  starttls.enable: true
  auth: true
  port: 587
activation:
  expiration.hours: 24
  template: /mails/activationEmail.html
change-password:
  template: /mails/passwordResetEmail.html

application-dev.yml和application-prod.yml之间的区别仅在端口。以便仅在部署之前更改mvn配置文件时更改端口。

共有1个答案

卢作人
2023-03-14

我不了解你想要的一切,但你有两个选择让一些东西工作。

首先,在您的maven配置文件中,您可以设置一个默认配置文件:

<profile>
   <id>dev</id>
   <activation>
       <activeByDefault>true</activeByDefault>
   </activation>

因此不需要为mvn clean install提供maven配置文件

另一种选择是为配置文件设置变量,并在构建应用程序时将这些值添加application.properties文件中。

例如,对于您的端口,您可以这样做:

<profile>
    <id>dev</id>
    <properties>
        <serverPort>9999</serverPort>
    </properties>
</profile>

在application.properties文件中,您可以使用@serverport获得值:

server.port=@serverPort@

如果您现在通过使用任何配置文件构建应用程序,您将获得maven配置文件中设置的值。

 类似资料:
  • 问题内容: 我正在尝试使用Maven 3 在Spring Boot应用程序中设置活动配置文件。在我的pom.xml中,将默认的活动配置文件和属性spring.profiles.active设置 为development: 但是每次我运行应用程序时,都会在日志中收到以下消息: 并且将SpringBoot配置文件设置为默认值(读取application.properties而不是application

  • 问题内容: 我正在使用不同的Maven配置文件将我的应用程序部署到不同的环境。(使用weblogic-maven-plugin,但是我认为这并不重要) 在应用程序中,我使用Spring Web Services。现在,我想根据环境更改端点。(端点在Spring的applicationContext.xml中定义) 我的想法是从属性文件中读取值。该属性文件将在Mavens软件包阶段写入(或复制)。

  • 我正在尝试将我的应用程序配置为具有两个构建配置文件:开发和生产。为此,我在src/main/resources文件夹下创建了两个子目录:src/main/resources/development和src/main/resources/production。每个子目录都有自己的。属性文件。 我使用命令mvn install-P${profile_here}构建应用程序 Maven将与所选配置文件相

  • 我正在将一个现有的项目(遗留)移到Maven。其结构如下: 我打算有两个不同的概况:生产和开发。在production profile中,/warmodule/src/main/resources/prod/index.jsp应该组装到views/war目录中。在开发概要文件中,/warmodule/src/main/resources/dev/index.jsp应该复制到views/war目录中

  • 问题内容: 我有一个使用maven作为构建工具的应用程序。 我正在使用Maven配置文件从不同的配置文件设置不同的属性。 我想做的是将maven中的所有活动配置文件也移植到spring活动配置文件中,以便我可以在bean签名()中引用它们。但我不确定该怎么做。 例如:考虑以下Maven设置 假设我在未指定任何其他配置文件的情况下运行maven,而我希望spring具有和 配置为活动配置文件。 问题

  • 我有一个用maven作为构建工具的应用程序。 我正在使用maven概要文件从不同的概要文件设置不同的属性。 假设我运行带有out的maven,并指定我希望spring的任何其他概要文件,将和作为活动概要文件。