【发布时间】:2016-01-25 21:00:01
【问题描述】:
总结:我正在尝试在 Java 中访问项目属性(例如版本),并且我读过的所有地方都说我需要在我的 build.gradle 文件中扩展属性。这一切都很好,很花哨,但我正在使用 LDAP 并在我的属性文件中对其进行配置。每当我尝试扩展属性时,我都会收到 LDAP 错误 49 52e (Invalid Credentials),因此似乎 Gradle 处理属性所做的任何事情都会扭曲 LDAP 属性,因此它们不再可用。
项目信息: 我在下面概述了我认为适用的项目信息。如果需要更多详细信息来确定问题,请发表评论,我会添加它们。
- 语言:
- Groovy 2.4
- Java 8
- 框架:
- Spring Boot 版本:1.3.1.RELEASE with starter POM
- 包括spring-boot-starter-security
- 包括spring-security-ldap
- Spring Boot 版本:1.3.1.RELEASE with starter POM
- 构建工具:Gradle
- 2.3 版
- Spring Boot Gradle 插件 1.3.1.RELEASE
- 应用插件:
- 时髦
- 弹簧启动
构建信息:我在 build.gradle 文件中尝试了几种不同的配置来访问版本,但是当我添加“processResources”块时,我无法再访问 LDAP运行应用程序。该应用程序在没有“processResources”块的情况下运行和验证就很好,但是一旦我添加它,它就会运行,但由于 LDAP 抱怨凭据无效,我无法访问任何内容。我尝试了 3 种不同的展开配置,结果都是这样。
构建配置尝试 1:
processResources {
expand(project.properties)
}
构建配置尝试 2:
processResources {
filesMatching('**/*.properties') { expand(project.properties) }
}
此时我突然想到我正在属性文件中配置我的 LDAP 登录,因此解决方案可能是完全避免使用属性文件。我发现您应该可以只扩展您需要的属性,所以我尝试了以下方法。
构建配置尝试 3:
processResources {
expand projectVersion: project.version
}
如前所述,上述所有尝试都失败了,但我仍然遇到了每个尝试的 LDAP 身份验证错误。没有“procesResources”块的 build.gradle 文件似乎是让 LDAP 满意的唯一方法。
属性信息: 如前所述,我在属性文件中配置了 LDAP 信息。以下是相关属性。
application.properties
spring.profiles.active=localdev
ldap.securitygroup=DEV
logout.path=
host.securePort=
如您所见,我使用的是 localdev 配置文件,因此我在下面包含了它的适用属性。由于它包含敏感信息,我只指定了属性名称而不是它们的值。我使用星号 (*) 表示提供了一个非空值。 (在上面的 application.properties 文件中,列出的几个属性的值确实为空):
application-localdev.properties
host.securePort=*
ldap.username=*
ldap.password=*
ldap.base=DC=*,DC=*,DC=*
ldap.roleSearchBase=OU=*,DC=*,DC=*,DC=*
ldap.defaultUrl=ldap://*
ldap.urls=ldap://* ldap://*
属性根本没有改变,它只是在没有 build.gradle 文件中的 processResources 块的情况下工作,然后当我添加它的这 3 个版本中的任何一个时都没有。
我们将不胜感激任何有助于解决此问题的帮助,如果需要任何进一步的信息,请告诉我,我会更新此信息。
【问题讨论】:
标签: gradle properties spring-boot ldap project-properties