鍍金池/ 問答/Java  HTML/ springboot從main方法運行后,pom中配置的profile無效

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命令,他會根據(jù)profile,將不需要的java類不再打包,這樣,運行自然不會報錯。

但是,在idea中,直接運行main方法,不知道該如何設置,才能避免將不需要的java類打包進去

Error:(11, 6) java: 找不到符號
  符號:   類 KafkaListener
  位置: 類 com.message.kafka.KafkaConsumer

提供了一份demo,

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

可以下下來,導入到idea中,測試

回答
編輯回答
兮顏
2017年3月4日 14:30
編輯回答
心夠野

main啟動增加啟動參數(shù)

spring.profiles.active=

clipboard.png

2018年6月30日 10:16
編輯回答
避風港

你是用maven的profile配置嗎?

maven官方文檔

<settings>
  ...
  <activeProfiles>
    <activeProfile>配置名</activeProfile>
  </activeProfiles>
  ...
</settings>
2018年2月19日 21:25