2017-01-23 19 views
0

私はすべてのプロジェクトの共通プロパティを設定する "general.gradle"ファイルを持っています。 このファイルはgitリポジトリにコミットされており、多くのユーザで共有されています。私がシステムプロパティを追加したいと思い ので、それはsystemProp.http.nonProxyHosts.gradleファイルのgradleシステムプロパティを設定する

よう

なオプションすべてのユーザーに共通になります方法はありますか?

+0

あなたはdon'tに理由がありますか?そのためにgradle.propertiesファイルを使用したいのですが、プロジェクトにコミットしてもらえませんか? – OlgaMaciaszek

+0

私たちが使用する方法は少し異なります - 共通のグラデルプロパティを持つ共通のプロジェクトがあります。各ユーザーのホームフォルダに保存されているgradle.propertiesファイルは一般的ではありません。 いくつかのgeneral.gradleファイルでプロパティを設定する理由は、すべてのプロジェクトに伝播するということです。 –

答えて

1

あなたはそうのように、systemProp、そのファイルから、その後general.gradle負荷の性質によって接頭辞があり、システムのプロパティを追加、general.propertiesのように、別のファイルを作ることができます:

FileInputStream fileInputStream = new FileInputStream(new File('{YOUR_PATH}/general.properties')) 
Properties properties = new Properties() 
properties.load(fileInputStream) 
fileInputStream.close() 

properties.stringPropertyNames().forEach({key -> ext.set(key, properties.getProperty(key))}) 

してからルートにそれをロードしbuild.gradleプロジェクト内のファイル:

apply from: '{YOUR_PATH}/general.gradle' 

extプロパティから取得できます。この例の後に、general.propertiesをプロジェクトに追加して追加します(例:spring=dev)。

task testProp << { 
String profile = getProperty('spring') 
System.setProperty('Spring.profiles.active', profile) 
String prop = System.getProperty('Spring.profiles.active'); 
println prop 
} 

は、タスクの実行が devをプリントアウトする必要があります:あなたは build.gradleでこのようなタスクを追加する場合、あなたは、 general.gradleで財産ローディングコードを入れて、あなたの build.gradleでそれを適用します。

+0

説明してください - 最初の部分をどのように実行すればよいですか? properties.stringPropertyNames()。forEach({key - > ext.set(key、properties.getProperty(key))})は何ですか? –

+1

だからあなたは本当にそれを実行する必要はありません。プロジェクトにgeneral.propertiesファイルを置くだけです。このコードをgeneral.gradleに入れて、build.gradleファイルにgeneral.gradleを適用すると、手動で何も実行する必要はありません。 gradleはあなたのためにそれを実行し、forEachステートメント、 'ext'値のキーと値のペアを使用して、あなたのgradleタスクで使用することができます。実際には、私はまだこの答えを使用できる方法で修正すべきだと思います。私にそれをさせてください。 – OlgaMaciaszek

+0

お返事ありがとうございました! –

関連する問題