質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

2回答

1780閲覧

herokuデプロイ時にgradleタスクが失敗します

suntory

総合スコア2

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2020/06/29 05:31

前提・実現したいこと

SpringBootプロジェクトをherokuにデプロイしようとしたところ、
Gradleタスクでエラーが発生してしまい失敗してしまいます。
デプロイ成功させるための方法を知りたいです。

発生している問題・エラーメッセージ

remote: * What went wrong: remote: A problem was found with the configuration of task ':compileJava' (type 'JavaCompile'). remote: > Directory '/tmp/build_c643e295524ad9596513afb8960e51b5/build/tmp/doma-resources' specified for property '$1' does not exist.

該当のソースコード(build.gradle)

plugins { id 'org.springframework.boot' version '2.3.1.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE' id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' // テンポラリディレクトリのパスを定義する ext.domaResourcesDir = "${buildDir}/tmp/doma-resources" // domaが注釈処理で参照するリソースをテンポラリディレクトリに抽出 task extractDomaResources(type: Copy, dependsOn: processResources) { from processResources.destinationDir include 'doma.compile.config' include 'META-INF/**/*.sql' include 'META-INF/**/*.script' into domaResourcesDir } // テンポラリディレクトリ内のリソースをcompileJavaタスクの出力先ディレクトリにコピーする task copyDomaResources(type: Copy, dependsOn: extractDomaResources) { from domaResourcesDir into compileJava.destinationDir } compileJava { // 上述のタスクに依存させる dependsOn copyDomaResources // テンポラリディレクトリをcompileJavaタスクの入力ディレクトリに設定する inputs.dir domaResourcesDir options.encoding = 'UTF-8' } repositories { mavenCentral() maven {url 'https://oss.sonatype.org/content/repositories/snapshots/'} } dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' developmentOnly 'org.springframework.boot:spring-boot-devtools' testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } runtimeOnly 'org.postgresql:postgresql' implementation 'org.seasar.doma.boot:doma-spring-boot-starter:1.1.1' annotationProcessor 'org.seasar.doma:doma:2.19.2' implementation 'org.seasar.doma:doma:2.19.2' } test { useJUnitPlatform() }

試したこと

git add . git commit -m "コメント" git push heroku master

補足情報(FW/ツールのバージョンなど)

Java8
SpringBoot2.3.1
Gradle3

Doma2を利用しており、下記URLを参考にしました。
https://doma.readthedocs.io/en/2.20.0/build/#gradle

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

お使いのものとDomaのバージョンが異なる点に注意してほしいですが、下記のプロジェクトも参考にしてみてください。
https://github.com/domaframework/simple-examples

投稿2020/06/29 14:33

nakamura-to

総合スコア103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

suntory

2020/06/30 01:05

nakamura-toさん 回答ありがとうございます。 gradleのバージョンを6.5に変更して、 連携いただいたbuild.gradleを試したところ、以下のエラーが発生しました。 ``` remote: > Task :compileJava remote: /tmp/build_0a3709cc964c13f08f928bcddd848936/src/main/java/com/example/demo/ファイル名.java:11: error: [DOMA4019] ファイル[META-INF/com/example/demo/Dao名/ファイル名.sql]がクラスパスから見つかりませんでした。ファイルの絶対パスは"/tmp/build_0a3709cc964c13f08f928bcddd848936/build/classes/java/main/META-INF/com/example/demo/Dao名/ファイル名.sql"です。 ```
suntory

2020/06/30 01:28

上記の投稿を訂正します。 デプロイ成功しました。原因は、META-INFディレクトリをsrc/main/java配下に配置していたことです。 お騒がせしました。そして、助かりました。 ありがとうございます。
退会済みユーザー

退会済みユーザー

2020/08/06 04:54

suntoryさん 始めまして。 私も同じような問題で苦戦中です。解決文書に対して質問する形で申し訳ございませんが、 「原因は、META-INFディレクトリをsrc/main/java配下に配置していたことです」はどのような対応をすることで解決されましたか?
nakamura-to

2020/08/06 10:13

src/main/java/META-INFではなくsrc/main/resources/META-INFの下にSQLファイルを置いたということだと思います。
退会済みユーザー

退会済みユーザー

2020/09/29 01:46

nakamura-toさん ご回答ありがとうございます! ご回答頂いているにもかかわらず返答が遅くなりまして大変申し訳ございません。
guest

0

ベストアンサー

最近では、Domaを使ったプロジェクトのビルドには org.seasar.doma.compile プラグインを使うことを推奨しています。このプラグインを有効にした次のような build.gradle で試してみるとどうなるでしょうか?

groovy

1plugins { 2 id 'org.springframework.boot' version '2.3.1.RELEASE' 3 id 'io.spring.dependency-management' version '1.0.9.RELEASE' 4 id 'java' 5 id 'org.seasar.doma.compile' version '1.1.0' 6} 7 8group = 'com.example' 9version = '0.0.1-SNAPSHOT' 10sourceCompatibility = '1.8' 11 12compileJava { 13 options.encoding = 'UTF-8' 14} 15 16repositories { 17 mavenCentral() 18 maven {url 'https://oss.sonatype.org/content/repositories/snapshots/'} 19} 20 21dependencies { 22 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' 23 implementation 'org.springframework.boot:spring-boot-starter-web' 24 developmentOnly 'org.springframework.boot:spring-boot-devtools' 25 testImplementation('org.springframework.boot:spring-boot-starter-test') { 26 exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' 27 } 28 runtimeOnly 'org.postgresql:postgresql' 29 implementation 'org.seasar.doma.boot:doma-spring-boot-starter:1.1.1' 30 annotationProcessor 'org.seasar.doma:doma:2.19.2' 31 implementation 'org.seasar.doma:doma:2.19.2' 32} 33 34test { 35 useJUnitPlatform() 36}

投稿2020/06/29 14:32

nakamura-to

総合スコア103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nakamura-to

2020/06/29 14:40

Gradleのバージョンが3とのことですが、可能であればもっと新しいバージョンを使った方が良いかもしれません。org.seasar.doma.compile プラグインはGradle 5で動くことは確認したことはありますが、3で動くかどうかはわかりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問