关于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
即我无法以这种方式更改依赖范围。我在这里想念什么?
答案 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配置文件而有所不同。