現在、MavenプロジェクトへGitHub Actionsを用いてCIを導入しようとしているのですが、下記のようなワークフローのymlファイルでビルドを行うと、テストコードの部分でビルドエラーが発生し、ビルドが出来ない状態でおります。
yml
1# This workflow will build a Java project with Maven 2# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven 3 4name: Java CI with Maven 5 6on: 7 push: 8 branches: [ main ] 9 pull_request: 10 branches: [ main ] 11 12jobs: 13 build: 14 15 runs-on: ubuntu-latest 16 17 steps: 18 - uses: actions/checkout@v2 19 - name: Set up JDK 8 20 uses: actions/setup-java@v2 21 with: 22 java-version: '8' 23 distribution: 'adopt' 24 - name: Build with Maven 25 run: mvn -B package --file pom.xml
エラー内容は下記のように、package org.junit does not exist
と、ユニットテストのあるクラスにおいてcannot find symbol
となってしまっているので、上記のymlのワークフローで実行している、mvn -B package --file pom.xml
のMavenプロジェクトのビルド時に、JUnitのライブラリのパッケージ読み込みに問題が発生しているものと推測しております。
ErrorMessage
12021-07-24T12:09:35.1081503Z [INFO] 24 errors 22021-07-24T12:09:35.1082509Z [INFO] ------------------------------------------------------------- 32021-07-24T12:09:35.1083403Z [INFO] ------------------------------------------------------------------------ 42021-07-24T12:09:35.1084179Z [INFO] BUILD FAILURE 52021-07-24T12:09:35.1084978Z [INFO] ------------------------------------------------------------------------ 62021-07-24T12:09:35.1116178Z [INFO] Total time: 8.300 s 72021-07-24T12:09:35.1118245Z [INFO] Finished at: 2021-07-24T12:09:35Z 82021-07-24T12:09:35.1132705Z [INFO] ------------------------------------------------------------------------ 92021-07-24T12:09:35.1198182Z [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5.1:compile (default-compile) on project food_share_web: Compilation failure: Compilation failure: 102021-07-24T12:09:35.1201119Z [ERROR] /home/runner/work/food_share_web/food_share_web/src/test/TestTimestampUtil.java:[3,24] package org.junit does not exist 112021-07-24T12:09:35.1203527Z [ERROR] /home/runner/work/food_share_web/food_share_web/src/test/TestTimestampUtil.java:[7,17] package org.junit does not exist 122021-07-24T12:09:35.1205781Z [ERROR] /home/runner/work/food_share_web/food_share_web/src/test/TestTimestampUtil.java:[29,10] cannot find symbol 132021-07-24T12:09:35.1207252Z [ERROR] symbol: class Test 142021-07-24T12:09:35.1208255Z [ERROR] location: class test.TestTimestampUtil
色々と試してみた結果、下記のpom.xml
にて定義している<dependencies>
の中のjunit
の項目の<scope>test</scope>
の部分を削除することで、warファイルのビルドが成功することが出来ました。
xml
1<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>jp.example</groupId> 5 <artifactId>food_share_web</artifactId> 6 <version>0.0.1-SNAPSHOT</version> 7 <packaging>war</packaging> 8 <build> 9 <sourceDirectory>src</sourceDirectory> 10 <plugins> 11 <plugin> 12 <artifactId>maven-compiler-plugin</artifactId> 13 <version>3.5.1</version> 14 <configuration> 15 <source>1.8</source> 16 <target>1.8</target> 17 </configuration> 18 </plugin> 19 <plugin> 20 <artifactId>maven-war-plugin</artifactId> 21 <version>3.0.0</version> 22 <configuration> 23 <warSourceDirectory>WebContent</warSourceDirectory> 24 </configuration> 25 </plugin> 26 <plugin> 27 <groupId>com.heroku.sdk</groupId> 28 <artifactId>heroku-maven-plugin</artifactId> 29 <version>3.0.4</version> 30 <configuration> 31 <appName>${heroku.appName}</appName> 32 </configuration> 33 </plugin> 34 </plugins> 35 </build> 36 <dependencies> 37 <dependency> 38 <groupId>mysql</groupId> 39 <artifactId>mysql-connector-java</artifactId> 40 <version>5.1.45</version> 41 </dependency> 42 <dependency> 43 <groupId>org.hibernate</groupId> 44 <artifactId>hibernate-core</artifactId> 45 <version>5.2.13.Final</version> 46 </dependency> 47 <dependency> 48 <groupId>org.apache.taglibs</groupId> 49 <artifactId>taglibs-standard-impl</artifactId> 50 <version>1.2.5</version> 51 </dependency> 52 <dependency> 53 <groupId>javax.servlet.jsp.jstl</groupId> 54 <artifactId>javax.servlet.jsp.jstl-api</artifactId> 55 <version>1.2.1</version> 56 </dependency> 57 <dependency> 58 <groupId>javax.servlet</groupId> 59 <artifactId>javax.servlet-api</artifactId> 60 <version>3.0.1</version> 61 <scope>provided</scope> 62 </dependency> 63 <dependency> 64 <groupId>junit</groupId> 65 <artifactId>junit</artifactId> 66 <version>4.11</version> 67 <scope>test</scope> 68 </dependency> 69 </dependencies> 70</project>
しかし、CI実行結果のログをよく見るとユニットテストの実行がスキップされている結果になり、対処療法的な処置になってしまいました。
CIでのユニットテストの実行がされないのであれば導入した意味がないので、なんとかCIの実行時にユニットテストが動作するようにしたいと思っております。
このビルドエラーの根本的な解決方法について、ご存知の方がおりましたらぜひともご教授いただければ幸いです。
また、上記以外で必要な情報が必要な場合、当然自分からも提供いたしますが、下記のGitHubレポジトリも参考にしていただけたらと思います。
https://github.com/Kawboy442/food_share_web/tree/feature/%2395-Setting-up-a-CI
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。