[英]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.