Groovyを使用してプロパティファイルから値を取得する方法
キーとしてファイル名を持ち、値として宛先パスを持つプロパティファイル(.properties)が必要です。移動する必要のあるファイルに応じて、実行時にキーを解決する必要があります。
これまでのところ、プロパティをロードすることができますが、ロードされたプロパティから値を「取得」することはできません。
私はスレッドに言及しました: groovy:プロパティーファイルにアクセスする方法? そして、これまでに私が持っているコードスニペットです
def props = new Properties();
File propFile =
new File('D:/XX/XX_Batch/XX_BATCH_COMMON/src/main/resources/patchFiles.properties')
props.load(propFile.newDataInputStream())
def config = new ConfigSlurper().parse(props)
def ant = new AntBuilder()
def list = ant.fileScanner {
fileset(dir:getSrcPath()) {
include(name:"**/*")
}
}
for (f in list) {
def key = f.name
println(props)
println(config[key])
println(config)
def destn = new File(config['a'])
}
現時点では、プロパティファイルには次のエントリがあります。
jan-feb-mar.jsp=/XX/Test/1
XX-1.0.0-SNAPSHOT.jar=/XX/Test/1
a=b
c=d
Props.getProperty( 'a')またはconfig ['a']のいずれかを使用して検索すると、正しい値が返されます。コードも試してみました:notation
しかし、config [key]のように変数 "key"の使用に切り替えるとすぐに-> [:]が返されます
私はグルーヴィーなのですが、ここで何が欠けていると言うことはできません。
物事を複雑にしすぎているように思えます。
仕事をする簡単な例は次のとおりです。
指定されたtest.properties
ファイル:
a=1
b=2
このコードは正常に実行されます。
Properties properties = new Properties()
File propertiesFile = new File('test.properties')
propertiesFile.withInputStream {
properties.load(it)
}
def runtimeString = 'a'
assert properties."$runtimeString" == '1'
assert properties.b == '2'
File
が必要で、ロードするファイルが_src/main/resources
_または_src/test/resources
_フォルダーまたはクラスパスにある場合を除き、getResource()
はそれを解決する別の方法です。
例えば。
_ def properties = new Properties()
//both leading / and no / is fine
this.getClass().getResource( '/application.properties' ).withInputStream {
properties.load(it)
}
//then: "access the properties"
properties."my.key"
_
念のため...
プロパティキーにドット(。)が含まれる場合は、キーを引用符で囲むことを忘れないでください。
プロパティファイル:
a.x = 1
グルーヴィー:
Properties properties ...
println properties."a.x"
同様の問題があった場合、次の方法で解決しました。
def content = readFile 'gradle.properties'
Properties properties = new Properties()
InputStream is = new ByteArrayInputStream(content.getBytes());
properties.load(is)
def runtimeString = 'SERVICE_VERSION_MINOR'
echo properties."$runtimeString"
SERVICE_VERSION_MINOR = properties."$runtimeString"
echo SERVICE_VERSION_MINOR