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>
<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=
回答:
你是用maven的profile配置吗?
<settings> ...
<activeProfiles>
<activeProfile>配置名</activeProfile>
</activeProfiles>
...
</settings>
回答:
以上是 springboot从main方法运行后,pom中配置的profile无效 的全部内容, 来源链接: utcz.com/p/173032.html