springboot从main方法运行后,pom中配置的profile无效

在intellij idea中的springboot项目,通过运行application的main方法,启动springboot项目。

但是在maven的pom.xml中,配置了profile,如果在运行时,将这些profile考虑进去。

比如,我在pom中提供了两个profile,分别为activemq,和kafka,希望在不同的profile下,加载不同的消息依赖。

但是如果直接在application中,启动main方法,总会因为当处于其中一个profile时,代码中关于另外一种消息的代码会因为找不到依赖而报错。

下面这一段代码,是pom中配置了的两个profile.

<profiles>

<profile>

<id>kafka</id>

<activation>

<activeByDefault>true</activeByDefault>

</activation>

<properties>

<active.profile>kafka</active.profile>

</properties>

<dependencies>

<dependency>

<groupId>org.springframework.kafka</groupId>

<artifactId>spring-kafka</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.kafka</groupId>

<artifactId>spring-kafka-test</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

<build>

<resources>

<resource>

<directory>src/main/java/com/fw/sf/api/message/kafka</directory>

<excludes>

</excludes>

</resource>

</resources>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<configuration>

<excludes>

<exclude>com/message/activemq/*.java</exclude>

</excludes>

</configuration>

</plugin>

</plugins>

</build>

</profile>

<profile>

<id>activemq</id>

<properties>

<active.profile>activemq</active.profile>

</properties>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-activemq</artifactId>

<exclusions>

<exclusion>

<groupId>org.springframework</groupId>

<artifactId>spring-jms</artifactId>

</exclusion>

</exclusions>

</dependency>

<dependency>

<groupId>org.apache.activemq</groupId>

<artifactId>activemq-pool</artifactId>

</dependency>

</dependencies>

<build>

<resources>

<resource>

<directory>src/main/java/com/fw/sf/api/message/kafka</directory>

<excludes>

</excludes>

</resource>

</resources>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<configuration>

<excludes>

<exclude>com/message/kafka/*.java</exclude>

</excludes>

</configuration>

</plugin>

</plugins>

</build>

</profile>

</profiles>

因为添加了exclude,所以,使用mvn spring-boot:run 这样的maven命令,他会根据profile,将不需要的java类不再打包,这样,运行自然不会报错。

但是,在idea中,直接运行main方法,不知道该如何设置,才能避免将不需要的java类打包进去

Error:(11, 6) java: 找不到符号

符号: 类 KafkaListener

位置: 类 com.message.kafka.KafkaConsumer

提供了一份demo,

https://pan.baidu.com/s/1fGd-...

可以下下来,导入到idea中,测试

回答:

main启动增加启动参数

spring.profiles.active=

clipboard.png

回答:

你是用maven的profile配置吗?

maven官方文档

<settings>

...

<activeProfiles>

<activeProfile>配置名</activeProfile>

</activeProfiles>

...

</settings>

回答:

参考这个

以上是 springboot从main方法运行后,pom中配置的profile无效 的全部内容, 来源链接: utcz.com/p/173032.html

回到顶部