不确定这是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/