java - 使用properties-maven-plugin选择application.properties

标签 java maven spring-boot pom.xml application.properties

我在我的应用程序中定义了几个 application.properties 文件。每一种都适用于不同的环境。在这些文件中,我为每个环境定义了数据源。

我想让 Maven 根据应用程序部署到的环境选择正确的属性文件。 为此,需要将一个属性从 WebLogic 服务器传递到 Spring,该属性用于确定环境。 该属性称为 weblogic.Name 我已根据此 WebLogic 属性命名我的 application.properties 文件,例如:

application-DEV.properties

application-UAT.properties

在我的 pom.xml 中,我有以下代码:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.cds</groupId>
<artifactId>webapp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>cds-webapp-war</name>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <spring.boot.version>2.0.0.RELEASE</spring.boot.version>
</properties>

<dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>${spring.boot.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>${spring.boot.version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
        <version>${spring.boot.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
        <version>${spring.boot.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>${spring.boot.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <version>${spring.boot.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
        <version>${spring.boot.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
        <version>${spring.boot.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.oracle.weblogic</groupId>
        <artifactId>weblogic-server-pom</artifactId>
        <version>12.2.1-0-0</version>
        <type>pom</type>
        <scope>provided</scope>
    </dependency>

</dependencies>
<build>
    <finalName>webapp-cds-${project.version}</finalName>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                <version>1.0.0</version>
                <executions>
                    <execution>
                        <phase>initialize</phase>
                        <goals>
                            <goal>read-project-properties</goal>
                        </goals>
                        <configuration>
                            <files>
                                <file>${project.basedir}/src/main/resources/application-${weblogic.Name}.properties</file>
                            </files>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <packagingExcludes>
                        WEB-INF/lib/logback*.jar,
                        WEB-INF/lib/*tomcat*.jar
                    </packagingExcludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
</build>

但是,当我尝试运行该应用程序时,如果我没有使用名称 application.properties 定义的文件,该应用程序将会失败。看来pom代码被忽略了,它只是在寻找application.properties。

谢谢!

最佳答案

执行的插件必须在插件管理之外。尝试将您的插件放置在pluginManagement之外。

关于java - 使用properties-maven-plugin选择application.properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51212438/

相关文章:

java - Spring Boot 应用程序中未调用调度程序作业

java - Spring Boot在不同环境下的部署

java - 应用程序无法在 Eclipse 模拟器上运行

java - Apache Camel 中的 XML 对象

java - 在 servlet 中使用 java.util.Timer 是否安全?

maven - 使用 cobertura 和 maven 站点插件时运行两次的测试

maven - 在 OpenAPI 规范定义中使用 Artifact 版本号

java - 从 Azure key 保管库获取 secret

java - log4j 将滚动文件移动到另一个目录/位置

java - 如何从 Jar 运行一个不在其 Manifest 文件中的 Main-Class 的类