如何在Maven Spring Boot项目中引用配置文件

时间:2019-05-07 12:35:04

标签: maven spring-boot

关于Maven和Spring Boot,我是新手。我需要基于配置文件运行一个spring boot项目。默认情况下,以下依赖项的范围为test,如果我要使用h2,则会在运行时引发错误。由于不允许更改范围,我想到了在pom.xml中添加两个配置文件-一个默认情况下默认处于活动状态,另一个配置文件用于h2依赖项而没有范围作为测试。

以下是我添加到pom.xml中的内容-

<profiles>
        <profile>
            <id>default</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.h2database</groupId>
                    <artifactId>h2</artifactId>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>automation</id>
            <properties>
                <env>automation</env>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>com.h2database</groupId>
                    <artifactId>h2</artifactId>
                </dependency>
            </dependencies>
        </profile>
    </profiles>

现在,我尝试使用以下命令运行项目-

mvn -D "spring-boot.run.profiles=automation" -DskipTests=true spring-boot:run

但是我仍然看到与之前相同的h2依赖范围错误。

Caused by: java.lang.IllegalStateException: Cannot load driver class: org.h2.Driver

即我无法以这种方式更改依赖范围。我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

您正在定义Maven配置文件,但正在激活Spring配置文件。使用以下语法:

mvn groupId:artifactId:goal -P profile-1,profile-2

https://maven.apache.org/guides/introduction/introduction-to-profiles.html

更新

我测试了您发布的配置,如果只有spring-boot:run个人资料处于活动状态,并且发生以下异常,则default对我来说失败:

java.lang.IllegalStateException: Cannot load driver class: org.h2.Driver

您可以使用以下方式检查依赖项

mvn dependency:tree

以上命令的输出根据传入的Maven配置文件而有所不同。