0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

build.gradleの「sourceSets」について調べてみた

Posted at

背景

参画していたプロジェクトでbuild.gradleに以下の記載があった。
どういう意図で書かれたものなのかわからなかったので調べてみた。

build.gradle
sourceSets {
  main {
    java {
      srcDirs 'src/main/java'
      srcDirs 'src/main/restapi'
      srcDirs 'src/main/test'
    }
  }
}

Gradleビルド時にコンパイルされるものされないもの

基本的に、標準構造に従っているソースについては、sourceSetsの記載なしで正常にコンパイルされます。

標準構造
・src/main/java       #メインのソースコード
・src/main/resources  #メインのリソース
・src/test/java       #テストコード
・src/test/resources  #テストのリソース

しかし、上記の標準構造に従っていないソースについては、Gradleが見つけることができないため、コンパイルされない。

今回でいうと、src/main/restapiがそれにあたる。

そういった標準構造に従っていないディレクトリを、build.gradle内のsourceSetsに記載してあげることで、Gradleがソースの場所を理解し、コンパイルできるようになる。

結論

sourceSetsに記載が必要なディレクトリは、標準構造に則っていないディレクトリのみ。

そのため正しくは、以下のようになる。

build.gradle
sourceSets {
  main {
    java {
      srcDirs 'src/main/restapi'
    }
  }
}

余談

①リソースファイルのディレクトリはresourcesブロックに指定すること

Javaブロックに入れると、GradleがJavaファイルと勘違いしてコンパイルしようとして、エラーが起きる場合あり。

build.gradle
sourceSets {
  main {
    resources {
      srcDirs 'src/***/resources'
    }
  }
}

②コンパイル対象から外したいJavaファイルがあれば以下のように設定する

build.gradle
sourceSets {
  main {
    java {
      srcDirs 'src/main/java'
      excluded '**/Test.java' #コンパイル対象外となる
    }
  }
}
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?