[英]Expanding Properties in Gradle Breaks LDAP Config
简介:我正在尝试访问Java中的项目属性(例如版本),在我读过的所有地方都说我需要在build.gradle文件中扩展属性。 一切都很好,但是我正在使用LDAP并在属性文件中对其进行配置。 每当我尝试扩展属性时,都会收到LDAP错误49 52e(无效凭据),因此似乎Gradle处理该属性的任何操作都会扭曲LDAP属性,因此它们不再可用。
项目信息:我在下面概述了我认为适用的项目信息。 如果需要更多详细信息来确定问题,请发表评论,然后我将其添加。
构建信息:我已经在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个版本中的任何一个时,属性都没有变化。
我们非常感谢您提供任何帮助以帮助您解决此问题,如果需要更多信息,请告诉我,我将对其进行更新。
因此,一位同事给了我一个很好的建议,他说我可以检查JAR文件中的属性,以查看是否与最初指定的内容不同。
长话短说,当我在build.gradle文件中没有processResources块时,属性不会更改,一切都会很愉快。 但是,当添加processResources时,将删除ESCAPE字符,从而导致用户名更改,因为其中包含了转义字符。
我现在使用的解决方法是将转义字符加倍,这对我来说似乎是一个技巧,因此,如果有更好的配置方法,请回复!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.