10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Gradleのpropertiesをapplication.ymlから参照する

Posted at

環境

Android開発環境じゃありません。
AndroidはBuildConfigFieldとか使ってた覚えがありますが、SpringBootで開発してる今はそんなもんありませんでした(勘違いだったらご指摘ください)。

経緯

gradle側とapplication側で同じ値を使うため、単純に二箇所に書きたくなかった事が発端でした。変えるときに絶対ミスするから2箇所に書きたくない。こんなん先人たちがやってるだろうとタカをくくったら全然資料ないし(ググり力足りない + 主に日本語の記事ばかり見てしまう)、四苦八苦しました。

方法

propertiesを宣言する

ここは普通に書くだけです。

gradle.properties
datasourceUrl=jdbc:mysql://localhost:13306/myApp?useSSL=false
datasourceUser=root
datasourcePassword=root
datasourceSchemas=my_app_db

applicationName=myApp
applicationVersion=0.0.1-SNAPSHOT

build.gradleに以下を追加

build.gradle

// ~~~~ 省略 ~~~~ //

import org.apache.tools.ant.filters.ReplaceTokens
processResources {
	filesMatching('**/application.yml') {
		filter(
				ReplaceTokens,
				tokens: [
						'applicationName': "${applicationName}".toString(),
						'version': "${applicationVersion}".toString(),
						'datasourceUrl': "${datasourceUrl}".toString(),
						'datasourceUser': "${datasourceUser}".toString(),
						'datasourcePassword': "${datasourcePassword}".toString()
				]
		)
	}
}

  • filesMatching()
    置き換えたい対象のファイルを指定します。指定しないと全ファイルが対象になります。

  • filter()
    対象の文字列を置き換えます。

filter(
	ReplaceTokens, // ReplaceTokensを使う
	tokens: ['置き換えたい対象ファイルに記載したKEY': '${置き換えたいpropertiesのKEY}']
)

使う側

application.yml
spring:
  profiles:
    active: local, development
  # MySQL接続情報
  datasource:
    url: @datasourceUrl@
    username: @datasourceUser@
    password: @datasourcePassword@
app:
  name: @applicationName@
  version: @version@
  • 置き換えたい文字列を「@」で囲む。

終わり

これでクリーンビルドをすれば、ymlの値が置き換えられて参照できるようになります。
ymlから値を参照する方法は他に沢山資料があるのでそちらを。

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?