私は自分のプロジェクトでGradleを使用しています。私は私の戦争でいくつかの追加の構成を行うためのタスクがあります。私のようなタスクで使用する文字列を作成する必要があります。
task extraStuff{
doStuff 'org.springframework:spring-web:3.0.6.RELEASE@war'
}
これは正常に機能します。私がする必要があるのは、バージョンを定義し(実際にプロパティファイルで既に定義されている)、これを次のようなタスクで使用することです:
springVersion=3.0.6.RELEASE
task extraStuff{
doStuff 'org.springframework:spring-web:${springVersion}@war'
}
私の問題は、春バージョンが変数として認識されないことです。それでは、文字列内でどのように渡すことができますか?
私は問題が文字列リテラル区切り文字にあるかもしれないと思う:
groovy
とまったく同じように定義されているため、一重引用符または二重引用符で囲みます(例:"3.0.6.RELEASE"
);Gstrings
は単一引用符文字列で解析されません(両方とも単一の'...'
またはトリプル'''...'''
ones)正しくリコールした場合。したがって、コードは次のようになります。
springVersion = '3.0.6.RELEASE' //or with double quotes "..."
task extraStuff{
doStuff "org.springframework:spring-web:${springVersion}@war"
}
Androidアプリを使用してGradleを開発している場合、変数を宣言する(つまり、いくつかの依存関係バージョンを保持する)には、キーワードdef
以下のように:
def dependsVersion = '1.2'
dependencies {
compile "groupId:artifactId:${dependsVersion}"
}
お役に立てば幸いです!
On Androidこれを実現する方法は実際には2つの可能性があります。どちらがニーズに合っているかによります。これら2つの可能性には長所と短所があります。def
変数またはext{}
ブロック。変数def
は、変数をクリックして、ファイル内でext{}
その正確な変数を指していないブロック。一方 ext{}
には1つの優れた利点があります。つまり、project_name/build.gradle
からproject_name/app/build.gradle
これは非常に便利な場合もありますが、その変数をクリックすると、たった1つのファイル内でのみ、その変数の定義を指摘することはできません。リストが大きくなります。
1)defオプション。これが最適であり、検索時間を節約できます。
def lifecycle = '2.0.0'
dependencies {
implementation 'androidx.lifecycle:lifecycle-extensions:$lifecycle'
}
2)2番目のext {}ブロック。依存関係リストが巨大でなければ大丈夫です。
ext {
lifecycle = '1.1.1'
}
dependencies {
implementation 'androidx.lifecycle:lifecycle-extensions:$lifecycle'
}
)場合によっては、変数を共有したい場合project_name/build.gradle
およびproject_name/app/build.gradle
ext {}を使用
project_name/build.gradleでは、kotlin_shared_variable
:
buildscript {
ext.kotlin_shared_variable = '1.3.41'
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_shared_variable"
}
}
project_name/app/build.gradleで使用できます
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_shared_variable"
}
そしてもちろん、それらを組み合わせることができます。