gradle - 在 Gradle 中扩展属性会破坏 LDAP 配置

标签 gradle properties spring-boot ldap project-properties

摘要:我正在尝试在 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 安全 ldap
  • 构建工具:Gradle
  • 2.3 版
  • Spring Boot Gradle 插件 1.3.1.RELEASE
  • 应用插件:
  • 时髦的
  • Spring Boot

  • 构建信息:我在 build.gradle 文件中尝试了一些不同的配置来访问版本,但是在我添加“processResources” block 的那一刻,我在运行应用程序时无法再访问 LDAP。该应用程序在没有“processResources” block 的情况下运行和验证就很好,但是一旦我添加它,它就会运行,但由于 LDAP 提示凭据无效,我无法访问任何内容。我尝试了 3 种不同的扩展配置,并且都以这种方式运行。

    构建配置尝试 1:
    processResources {
        expand(project.properties)
    }
    

    构建配置尝试 2:
    processResources {
        filesMatching('**/*.properties') { expand(project.properties) }
    }
    

    此时我突然想到我正在属性文件中配置我的 LDAP 登录,所以解决方案可能是完全避免使用属性文件。我发现你可以只扩展你需要的属性,所以我尝试了以下方法。

    构建配置尝试 3:
    processResources {
        expand projectVersion: project.version
    }
    

    如前所述,上述所有尝试都失败了,我仍然得到每个尝试的 LDAP 身份验证错误。没有“procesResources” block 的 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 block 的情况下工作,然后当我添加这 3 个版本中的任何一个时都没有。

    任何有助于解决此问题的帮助将不胜感激,如果需要任何进一步的信息,请告诉我,我会更新此信息。

    最佳答案

    所以一位同事给了我一个很好的提示,说我可以检查 JAR 文件中的属性,看看是否有与最初指定的不同。

    长话短说,当我在 build.gradle 文件中没有 processResources block 时,属性不会改变,一切都很好。但是,当添加 processResources 时,ESCAPE CHARACTERS 被删除,导致用户名发生变化,因为我有一个转义字符。

    我现在使用的解决方法是加倍转义字符,这对我来说似乎是一种黑客攻击,所以如果有更好的配置方法,请回复!

    关于gradle - 在 Gradle 中扩展属性会破坏 LDAP 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35002264/

    相关文章:

    gradle - 在根项目 '' gradle.build中找不到路径为 ''的项目

    Java:XML 到对象以及对象到带有属性的 XML

    java - 为什么 JRebel 配置应该包含在我的 war 中?

    java - 如何在Spring Boot中注入(inject)MockMvc?

    java - 在具有相同属性名称的不同数据类型上使用 ModelMapper

    android - 模块依赖

    android - 无法获取未知属性 'localProperties'

    jenkins - 没有使用jenkins gradle人工插件部署的 Artifactory

    vb.net - 有没有办法在 .NET 中重载属性

    gradle.properties 无法使用点符号读取属性