Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 替换其他属性文件中application.properties的值_Java_Maven_Spring Boot - Fatal编程技术网

Java 替换其他属性文件中application.properties的值

Java 替换其他属性文件中application.properties的值,java,maven,spring-boot,Java,Maven,Spring Boot,我的Spring boot应用程序中有以下文件应用程序属性文件。 所有属性文件都位于src/main/resources文件夹中 Spring启动版本是2.1.6 application.properties application-dev.properties 应用程序-tst.properties application.properties app.name={app.name}app.common=common val application-dev.properties app.nam

我的Spring boot应用程序中有以下文件应用程序属性文件。 所有属性文件都位于src/main/resources文件夹中 Spring启动版本是2.1.6

application.properties application-dev.properties 应用程序-tst.properties

application.properties app.name={app.name}app.common=common val
application-dev.properties app.name=我的开发应用程序
application-tst.properties app.name=我的tst应用程序

Dev和tst是我创建的maven概要文件

 <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <env>dev</env>
            </properties>
        </profile>

        <profile>
            <id>tst</id>
            <properties>
                <env>tst</env>
            </properties>
        </profile>
    </profiles>

发展
真的
发展
tst
tst
如果我使用dev概要文件构建项目,我应该在application.properties中获得以下内容

1) mvn-Pdev清洁安装

application.properties app.name=My dev app.common=common val

2) mvn-Ptst清洁安装

application.properties app.name=我的tst应用程序app.common=公共值


如何实现这一点?

您可以使用环境变量像这样设置活动配置文件

mvn安装-Dspring.profiles.active=dev


mvn安装-Dspring.profiles.active=tst

这可能不是推荐的方法,但您可以使用org.apache.maven.plugins.maven资源插件,如下所示

pom.xml application-dev.properties 应用程序-tst.properties
然后,
mvn-Pdev-clean安装
mvn-Ptst-clean安装

我想使用mvn-Pdev-clean构建install@OracleMonkey请参阅这篇文章,它解释了如何将spring启动运行时概要文件与maven构建时概要文件链接起来。maven概要文件不是spring概要文件。你把它们混在一起了。另外,您不应该为不同的环境构建单独的工件,而是构建一个工件并将其传播到不同的环境。使用Spring配置文件加载正确的配置文件。好的,谢谢。那么您能告诉我如何使用单个工件吗?只需像通常构建应用程序一样构建它,您可以使用
-Dspring.Profiles.active
指定在运行应用程序时哪些配置文件处于活动状态。好的,您的意思是我应该只维护application-dev.properties和application-uat.properties如M.Deinum之前所说,推荐的方法是什么,您可以使用
-Dspring.profiles.active
来指定运行应用程序时哪些配置文件处于活动状态。好的,您的意思是我应该只维护application-dev.properties和application-tst.properties我们在
application.properties
中设置的属性不随环境变化。我们在
应用程序-{profile}.properties
中设置属性,这些属性随环境的变化而变化。(例如数据库设置、API密钥)
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <filters>
            <filter>src/main/resources/application-${env}.properties</filter>
        </filters>
    </build>
app.name=@app.name@
app.common=Common val
app.name=My dev app
app.name=My tst app