如何根据Spring Boot运行时环境删除Gradle中的依赖项?

时间:2014-12-12 11:32:51

标签: gradle spring-boot

不确定这是Gradle问题还是Spring Boot问题,但这里有......

我在Spring启动应用程序中使用Spring安全性和LDAP。

我的build.gradle中有以下依赖项:

compile 'org.springframework.security:spring-security-ldap:3.2.4.RELEASE'
compile 'org.apache.directory.server:apacheds-server-jndi:1.5.5'

其中第二个提供了只在开发过程中需要的嵌入式LDAP服务器。

我已经建立了一个SB @Profile,并在具有@Profile(' development')注释的类中将LDIF文件配置/加载到嵌入式服务器中。

问题是:如何在不处于开发模式时删除第二个依赖项?

我在config / application.yml文件中建立了spring.profiles.active属性,因此:

spring:
  profiles:
    active: development

我可以引用spring.profiles.active以便以某种方式排除不需要的依赖项吗?

1 个答案:

答案 0 :(得分:1)

对于子孙后代,我最终做了什么......

在我的build.grade文件的顶部:

def readActiveProfile() {
    final config = new org.yaml.snakeyaml.Yaml().loadAll(new File('config/application.yml').newReader())
    final defaultPart = config?.take(1)
    defaultPart?.spring?.profiles?.active
}

final activeProfile = readActiveProfile() ?: ['development']

这将读取我保留外部化设置的配置文件(其中一个是定义活动配置文件的设置)。

然后,在依赖项部分:

compile 'org.springframework.security:spring-security-ldap:3.2.4.RELEASE'
if( ! ('production' in activeProfile))
    compile 'org.apache.directory.server:apacheds-server-jndi:1.5.5'

这对我的目的来说足够好,但感觉不是很正确;我假设会有一个更惯用的" Gradle方式"这样做。