摘要:我正在尝试在 Java 中访问项目属性(例如版本),并且我读过的所有地方都说我需要在我的 build.gradle 文件中扩展属性。这一切都很好,很花哨,但我正在使用 LDAP 并在我的属性文件中对其进行配置。每当我尝试扩展属性时,都会收到 LDAP 错误 49 52e (Invalid Credentials),因此似乎 Gradle 处理属性所做的任何事情都会扭曲 LDAP 属性,因此它们不再可用。
项目信息: 我在下面概述了我认为适用的项目信息。如果需要确定问题的更多详细信息,请发表评论,我会添加它们。
- 语:
- 时髦的 2.4
- 爪哇 8
- 框架:
- Spring Boot 版本:1.3.1.RELEASE with starter POM
- 包括spring-boot-starter-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 信息。以下是相关属性。
应用程序属性
spring.profiles.active=localdev
ldap.securitygroup=DEV
logout.path=
host.securePort=
如您所见,我使用的是 localdev 配置文件,因此我在下面包含了适用的属性。由于它包含敏感信息,我只指定了属性名称而不是它们的值。我使用星号 (*) 表示提供了一个非空值。(在上面的 application.properties 文件中,列出的几个属性的值确实为空):
应用程序-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 个版本中的任何一个时都没有。
任何有助于解决此问题的帮助将不胜感激,如果需要任何进一步的信息,请告诉我,我会更新此信息。