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

标签 gradle spring-boot

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

我在Spring Boot应用程序中使用Spring Security和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以便以某种方式排除不需要的依赖吗?

最佳答案

为了后代,我最终做了...

在我的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']

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

然后,在“依赖项”部分中:
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 - 如何根据Spring Boot运行时环境在Gradle中删除依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27442773/

相关文章:

java - 我们如何使用 springreactor 比较两个通量值

java - 删除 Java Mail 中已删除的电子邮件

android - Gradle插件3.6.1,分发URL版本5.6.4中的Gradle构建错误

gradle - 为什么Github软件包注册中心说我的 token 的作用域不是读取软件包?

android - 错误: package R does not exist - generated fragment directions file after Gradle update

android - 将使用android软件包的纯java项目作为依赖关系添加到android studio中的android项目

适用于多种环境的 gradle ear 应用程序包装

java - 如何在Thymeleaf中提交二维数组?

java - Spring 启动 : exception while exiting application

elasticsearch - Spring Data ElasticSearch 无法与 ElasticSearch 5.5.0 连接