我有一个在多个生产环境中运行的应用程序。在一个环境中,我们希望使用LDAP进行身份验证,而另一个环境则不需要。如果BuildConfig.groovy中包含Spring Security LDAP插件,则非LDAP环境无法进行身份验证,因为未配置LDAP。
我试过
environments {
devldap {
plugins {
compile ":spring-security-ldap:2.0-RC2"
}
}
}
但是LDAP插件仍然使用非LDAP环境构建,如果我不包含LDAP配置,则导致非LDAP环境(在这种情况下为development
)无法进行身份验证,因为它不能连接到LDAP。
我试过
grails clean
grails refresh-dependencies
但是只有在我完全注释掉它之后,LDAP插件才会卸载。
如何在我的构建中有条件地包含/排除插件?
答案 0 :(得分:1)
我现在看到这个问题有点老了,但是我对Melody插件做了类似的事情。在TEST期间安装这个没有价值 - 并且可能妨碍 - 所以我做了以下几点:
plugins {
// other plugins ...
if( Environment.current != Environment.TEST )
compile ":grails-melody:1.56.0"
// other plugins ...
}
因此,当我运行'test-app'时,我看到插件'已卸载',然后当我执行'run-app'时,我看到它已安装且可用。
注意:我最近因忘记做import grails.util.Environment
而感到困惑。如果你这样做,你会发现Environment.current == [:]
和Environment.TEST
一样。我相信这是由于配置文件背后的构建者。