我想在Maven中建立一个环境,在该环境中,我要根据激活的Maven概要文件累计激活多个spring概要文件。
当前,我pom.xml的相关部分如下:
<profiles>
<profile>
<id>local-db-development</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<properties>
<spring.profiles.active>local-db</spring.profiles.active>
</properties>
</profile>
<profile>
<id>live-db-development</id>
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<properties>
<spring.profiles.active>live-db</spring.profiles.active>
</properties>
</profile>
<profile>
<!--
If active, the user authentication will be through LDAP and AD,
Database auth will be used otherwise
-->
<id>ldap-authentication</id>
<properties>
<spring.profiles.active>ldap-authentication</spring.profiles.active>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-ldap</artifactId>
</dependency>
<dependency>
<groupId>org.apache.directory.server</groupId>
<artifactId>apacheds-server-jndi</artifactId>
<version>1.5.5</version>
</dependency>
</dependencies>
</profile>
</profiles>
我的问题是,当我激活 ldap-authentication 配置文件时,只有相关的spring配置文件将处于活动状态,而没有考虑任何* -db配置文件。
我想这样做,以便我可以激活ldap-authentication和local-db maven配置文件,然后应同时激活两个相关的spring配置文件,或者当我激活时,例如说在maven中的ldap-authentication和live-db ,那么这两个弹簧轮廓将处于活动状态。
我还没有真正找到一种连接弹簧轮廓的方法,所以,如果您更好地了解,请告诉我。
预先感谢
答案 0 :(得分:1)
我遇到了类似的问题,我不得不基于弹簧轮廓使用Artemis或RabbitMQ组件,但还想包含其他轮廓(例如dev,prod)。
我在pom.xml中做到了这一点:
<profiles>
<profile>
<id>artemis</id>
<activation>
<property>
<name>messaging.service</name>
<value>artemis</value>
</property>
</activation>
<properties>
<includeSpringProfile>artemis-profile</includeSpringProfile>
</properties>
</profile>
<profile>
<id>rabbitmq</id>
<activation>
<property>
<name>!messaging.service</name>
</property>
</activation>
<properties>
<includeSpringProfile>rabbitmq-profile</includeSpringProfile>
</properties>
</profile>
</profiles>
这在我的application.yml
中spring:
profiles.include: @includeSpringProfile@
现在,当我跑步时:
mvn spring-boot:run -Dspring-boot.run.arguments=--spring.profiles.active=prod
prod和rabbitmq配置文件均已激活:
2019-12-11 18:46:52.296 INFO 837 --- [ restartedMain] c.l.tacocloud.TacoKitchenApplication : The following profiles are active: rabbitmq-profile,prod
答案 1 :(得分:0)
好的,我找到了一个解决方案:您需要一个类似groovy的插件:
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.6</version>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.9</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<executions>
<execution>
<id>concatMavenProfiles</id>
<phase>initialize</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<scripts>
<script><![CDATA[
def value = ""
(project.activeProfiles).each{ profile -> value += profile.properties.springProfiles + "," }
project.properties.setProperty('spring.profiles.active', value.substring(0, value.length() - 1))
]]>
</script>
</scripts>
</configuration>
</execution>
</executions>
</plugin>
此脚本从活动配置文件中获取所有
我将配置文件中的
以我的经验,您还需要在项目