2016-11-13 5 views
5

私のJavaプロジェクトの1つは、実行可能な "fat-JAR"ファイルを展開準備状態でエクスポートします。 Gradleのを使用してJARファイルを作成するために、私は指示に従ったhereを説明:Gradleを使用して "fat-JAR"を作成するとlog4j.propertiesが上書きされる

task fatJar(type: Jar) { 
    manifest { 
     attributes 'Implementation-Title': '<HUMAN_READABLE_TITLE_OF_YOUR_PACKAGE>', 
      'Implementation-Version': version, 
      'Main-Class': '<PATH_TO_THE_MAIN_APPLICATION_CLASS>' 
    } 

    baseName = project.name + '-all' 
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 
    with jar 
} 

タスクが再帰的に一緒に、依存関係ツリーを経る必要に応じて、JARファイルを解凍し、そしてスカッシュすべてだろう示します。これまでの唯一の問題は、私の依存関係の一部が自分自身のlog4.propertiesファイルに付属していて、最終的に私が書いたものを上書きするということです。それらのすべてがそれぞれのリソースfoldersと同じレベルに存在するので、ファイルが一緒にマージされると、後に追加されたものが前に追加されたものを上書きするように見えます。

私が見つけた唯一の解決策は、コマンドラインパラメータを使用して手動で正しいファイルにパスを設定することです。最終的には、JAR自体を追加のオーバーヘッドなしで実行できるようにしたいと考えています。

私のlog4.propertiesを保存し、他の人がパッケージに追加されないようにするにはどうすればよいでしょうか?

答えて

2

ビルドJARにマージするファイルのコレクションからファイルを除外することができます。

from { 
    configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } 
} { 
    exclude "dir/subdir/the_file_to.exclude". 
} 
関連する問題