LoginSignup
14
14

More than 5 years have passed since last update.

Gradleビルドの成果物に特定のファイルを含める方法

Posted at

GradleでビルドしてJarファイルを作るときに、コンパイルしたクラスファイル以外のファイルをjarファイルに含める方法。
簡単にできそうに見えてつまづいたのでメモ。

プロジェクト構成はこんな感じ。Maven構成の方が楽だけとeclipseのプロジェクト構成で。

TestProject
└── src
│   ├── Test.java
│   └── Test2.java
├── files
│   ├── hogehoge.txt
│   ├── piyoipyo.txt
│   └── resources
│       └── foobar.txt
└── build.gradle

特に何も考えずにsrcディレクトリ指定だけ追加してビルドしただけではできたjarファイルにファイルが追加されない。

build.gradle
apply plugin: 'java'
sourceSets.main.java.srcDir 'src'
compileJava.options.encoding = "UTF-8"
$ gradle build
(出力中略)
$ jar -tf build/libs/TestProject.jar
META-INF/
META-INF/MANIFEST.MF
Test.class
Test2.class

任意のファイルを追加する際には、以下のようにbuild.gradleに追記する。

build.gradle
jar {
  into('dest') {
    from 'files'
  }
}

intoはコピー先、fromはコピー元。上記例だとfiles以下のファイルをdestというディレクトリに配置する。
fromのディレクトリが階層構造になっていてもよしなにやってくれる。

$ gradle build
(出力中略)
$ jar -tf build/libs/TestProject.jar
META-INF/
META-INF/MANIFEST.MF
Test.class
Test2.class
dest/
dest/hogehoge.txt
dest/piyoipyo.txt
dest/resources/
dest/resources/foobar.txt
14
14
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
14
14