根据活动弹簧配置文件提供maven依赖关系

And*_*ose 8 java spring tomcat maven spring-boot

所以我正在构建一个spring boot web应用程序,打包为战争,并部署到tomcat应用程序服务器.

我在tomcat的pom.xml中有以下依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

需要提供此依赖关系的范围,以便能够将其部署到tomcat实例.但是,当我想通过spring boot CLI或通过IntelliJ的默认spring boot运行配置来运行war时,我需要删除<scope>provided</scope>它以便它运行嵌入式tomcat.

我的问题是,是否有某种方法可以根据活动弹簧配置文件或其他方法有条件地提供依赖关系?

Sas*_*ota 5

您无法通过spring配置文件控制依赖性。但是,您可以通过Maven轮廓控制弹簧轮廓,它可以解决您的问题。

您可以在应用程序中声明几个Maven配置文件,并为每个配置文件提供不同的依赖关系集。然后,您可以配置Maven配置文件以使用特定的弹簧配置文件。看一下Maven配置文件以及此线程中的此类配置示例


小智 5

在您的特定情况下,您可以这样做:在使用嵌入式 tomcat 运行 spring-boot 的依赖项中:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>  
Run Code Online (Sandbox Code Playgroud)

并在配置文件中部署在 tomcat 下

<profile>
    <id>tomcat</id>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</profile>
Run Code Online (Sandbox Code Playgroud)

之后,为特定配置文件构建

mvn clean install -Ptomcat
Run Code Online (Sandbox Code Playgroud)