実現したいこと
Gradleでjarを作成する際、環境に合わせてjarに内包するlog4jの設定ファイルを切り替えたいです。
プロジェクト構成
下記のようにsrc/main/resourcesの下にlog4j2.xmlを置いております。
- src/main/resources/log4j2.xml…ローカル用
- src/main/resources/env/dev/log4j2.xml…開発環境用
- src/main/resources/env/prd/log4j2.xml…本番環境用
build.gradle
タスク"jar"の実行前に環境別のlog4j2.xmlをコピーしようと、下記のようなbuild.gradleを作成しました。
apply plugin: 'java' sourceCompatibility = 1.8 targetCompatibility = 1.8 archivesBaseName = 'LogSample' repositories { mavenCentral() } dependencies { compile('org.apache.logging.log4j:log4j-api:2.11.0') compile('org.apache.logging.log4j:log4j-core:2.11.0') } def defaultEncoding = 'UTF-8' tasks.withType(AbstractCompile)*.options*.encoding = defaultEncoding tasks.withType(GroovyCompile)*.groovyOptions*.encoding = defaultEncoding jar { manifest { attributes "Main-Class" : "Main" } from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } javadoc { options.charSet = 'UTF-8' options.encoding = 'UTF-8' } task jarForDev(group: 'build', description: '開発環境用のJarを作成します') << { copy { from "resources/env/dev/" into "resources" } tasks.jar.execute() } task jarForPrd(group: 'build', description: '本番環境用のJarを作成します') << { copy { from "resources/env/prd/" into "resources" } tasks.jar.execute() }
Gradleタスク
Eclipseから"jar"タスクを実行するとローカル用のlog4j2.xmlが入ったjarが作成されますが、
"jarForDev"、"jarForPrd"を実行すると、
log4j2.xmlや作成したソースのclassファイルが内包されていないjarが出来てしまいます。
質問内容
こちらの要望を満たすにはどのようにbuild.gradleを記述すればよいでしょうか?
ご存知の方がいらっしゃいましたら、アドバイスをお願い致します。
開発環境
Eclipse:4.7
Java:1.8
Gradle:3.5
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。