LoginSignup
19
18

More than 5 years have passed since last update.

Eclipse x gradle-tomcat-plugin の自動リロード

Posted at

こんな方が対象

  • Gradle と Tomcat と Eclipse を使っている
  • gradle-tomcat-plugin プラグインを使って Gradle から Tomcat を起動している
  • eclipse プラグインを使って .project や .classes を出力している

build.gradle で以下の様な設定をすると、gradle tomcatRun した後 Eclipse でコードを書き換えてビルドしたときに、Tomcat 側で自動リロードされるようになります。

build.gradle
  // eclipse plugin の設定
  eclipse {
    classpath.file {
      beforeMerged { classpath ->
        classpath.entries.clear()
      }
      whenMerged {  cp ->
        // Eclipse のビルドファイルの配置を Tomcat のリロード判定対象と同じようにする。
        // この設定を行うと、tomcatRun で実行中のサーバが、
        // eclipse でビルドが走った時に自動リロードされるようになる。
        cp.entries.findAll { it instanceof SourceFolder && it.path.startsWith("src/main/") }*.output = "src/main/webapp/WEB-INF/classes"
        // Gradle でのテストのために、Gradle の出力先に揃えておく
        cp.entries.findAll { it instanceof SourceFolder && it.path.startsWith("src/test/") }*.output = "build/classes/test"
        cp.entries.findAll { it instanceof SourceFolder && it.path.startsWith("src/test/resources") }*.output = "build/resources/test"
        cp.entries.removeAll { it.kind == "output" }
      }
    }
  }
  // compileJava 等でのクラスファイルの出力先を Tomcat のリロード判定対象と同じようにする。
  sourceSets.main.output.classesDir = 'src/main/webapp/WEB-INF/classes'

  clean {
    // add customized class output path to deletion targets of 'clean' task.
    delete << 'src/main/webapp/WEB-INF/classes'
  }

.gitignore には **/WEB-INF/classes と書いておくのがオススメです。

以下のサイトの情報をつなぎあわせてこんな結論になりました。ありがとうございます。

19
18
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
19
18