80625
現在
[Mavenプロジェクト](https://github.com/Kawboy442/food_share_web/tree/feature/%23116-Add-
Install-a-CD) において、GitHub Actionsを用いた自動デプロイ(CD)を行おうとしております。

設定したワークフローは下記のYAMLファイルになります。

```

    # This workflow will build a Java project with Maven
    # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
    
    name: Java CI with Maven
    
    on:
      push:
        branches: [ main ]
      pull_request:
        branches: [ main ]
    
    jobs:
      build:
    
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v2
        - name: Set up JDK 8
          uses: actions/setup-java@v2
          with:
            java-version: '8'
            distribution: 'adopt'
        - name: Build with Maven
          run: mvn -B package --file pom.xml
        - name: Deploy for Heroku
          run: mvn -X clean heroku:deploy-war
    
```

このうち、`Deploy for Heroku` のステップにおいて、GitHub Actionsにて実行すると、下記のようなエラーが発生してしまいます。

エラーメッセージ原文

```

    Error:  Failed to execute goal com.heroku.sdk:heroku-maven-plugin:3.0.4:deploy-war (default-cli) on project food_share_web: Execution default-cli of goal com.heroku.sdk:heroku-maven-plugin:3.0.4:deploy-war failed: Index 0 out of bounds for length 0 -> [Help 1]
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.heroku.sdk:heroku-maven-plugin:3.0.4:deploy-war (default-cli) on project food_share_web: Execution default-cli of goal com.heroku.sdk:heroku-maven-plugin:3.0.4:deploy-war failed: Index 0 out of bounds for length 0
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
        at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
        at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:64)
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke (Method.java:564)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal com.heroku.sdk:heroku-maven-plugin:3.0.4:deploy-war failed: Index 0 out of bounds for length 0
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:148)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
        at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
        at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:64)
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke (Method.java:564)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    Caused by: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
        at jdk.internal.util.Preconditions.outOfBounds (Preconditions.java:64)
        at jdk.internal.util.Preconditions.outOfBoundsCheckIndex (Preconditions.java:70)
        at jdk.internal.util.Preconditions.checkIndex (Preconditions.java:248)
        at java.util.Objects.checkIndex (Objects.java:359)
        at java.util.ArrayList.get (ArrayList.java:427)
        at com.heroku.sdk.deploy.util.HerokuCli.runAuthToken (HerokuCli.java:16)
        at com.heroku.sdk.deploy.lib.resolver.ApiKeyResolver.resolve (ApiKeyResolver.java:23)
        at com.heroku.sdk.maven.mojo.AbstractHerokuDeployMojo.deploy (AbstractHerokuDeployMojo.java:92)
        at com.heroku.sdk.maven.mojo.DeployWarMojo.execute (DeployWarMojo.java:18)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
        at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
        at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:64)
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke (Method.java:564)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    Error:  
    Error:  
    Error:  For more information about the errors and possible solutions, please read the following articles:
    Error:  [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
    Error: Process completed with exit code 1.
    
```

上記のメッセージ内で問題となっているのは下記の4点のエラーになります。

エラーメッセージ抜粋

```

    Error:  Failed to execute goal com.heroku.sdk:heroku-maven-plugin:3.0.4:deploy (default-cli) on project food_share_web: Execution default-cli of goal com.heroku.sdk:heroku-maven-plugin:3.0.4:deploy failed: Index 0 out of bounds for length 0 -> [Help 1]
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.heroku.sdk:heroku-maven-plugin:3.0.4:deploy (default-cli) on project food_share_web: Execution default-cli of goal com.heroku.sdk:heroku-maven-plugin:3.0.4:deploy failed: Index 0 out of bounds for length 0
    (省略)
    Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal com.heroku.sdk:heroku-maven-plugin:3.0.4:deploy failed: Index 0 out of bounds for length 0
    Caused by: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
    
```

共通しているのが、`Index 0 out of bounds for length 0`というエラーになります。  
この内容が要素のない配列から要素を読み出そうとしてエラーになっているというのは分かるのですが、どの配列を読み出そうとしているのかが分からない状態です。

手元の実機で `mvn -X clean heroku:deploy-war` のコマンドを実行した際には問題なくデプロイされ、エラーは発生しませんでした。  
エラーの解消について、以下のページを参考に設定をしたりしたのですが、どうにもエラーが解決出来ずに困っております。  
どなたか解決方をご存知でしたら、ご教授いただけると幸いです。

**参考にしたサイト:**  
[Unable to Build using MAVEN with ERROR - Failed to execute goal
org.apache.maven.plugins:maven-compiler-plugin:3.1:compile - Stack
Overflow](https://stackoverflow.com/questions/20218486/unable-to-build-using-
maven-with-error-failed-to-execute-goal-org-apache-maven)

必要な情報として、下記がレポジトリで実行したMavenのバージョン情報です。

```

    $ mvn --version
    Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
    Maven home: /usr/local/Cellar/maven/3.8.1/libexec
    Java version: 15.0.2, vendor: Oracle Corporation, runtime: /Users/itouryousuke/Library/Java/JavaVirtualMachines/openjdk-15.0.2/Contents/Home
    Default locale: ja_JP, platform encoding: UTF-8
    OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
    
```

pom.xmlについては下記になります。

```

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>jp.example</groupId>
        <artifactId>food_share_web</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>
        <build>
            <sourceDirectory>src</sourceDirectory>
            <testSourceDirectory>test</testSourceDirectory>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.0.0</version>
                    <configuration>
                        <warSourceDirectory>WebContent</warSourceDirectory>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.heroku.sdk</groupId>
                    <artifactId>heroku-maven-plugin</artifactId>
                    <version>3.0.4</version>
                    <configuration>
                        <appName>foodshareweb</appName>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.45</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>5.2.13.Final</version>
            </dependency>
            <dependency>
                <groupId>org.apache.taglibs</groupId>
                <artifactId>taglibs-standard-impl</artifactId>
                <version>1.2.5</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet.jsp.jstl</groupId>
                <artifactId>javax.servlet.jsp.jstl-api</artifactId>
                <version>1.2.1</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.0.1</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>jakarta.xml.bind</groupId>
                <artifactId>jakarta.xml.bind-api</artifactId>
                <version>2.3.2</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jaxb</groupId>
                <artifactId>jaxb-runtime</artifactId>
                <version>2.3.2</version>
            </dependency>
        </dependencies>
    </project>
    
```

よろしくお願いいたします。
CC BY-SA 4.0
2021-08-04T08:21:24.690
80594
2021-08-05T18:12:01.490
2021-08-05T02:03:33.287
36146
36146
question
java maven servlet github-actions
MavenプロジェクトでのGitHub Actionsによる自動デプロイ時のエラーについて
(直接の回答にはなっていませんが、コメント欄に書ききれないので)

スタックトレースから、例外を送出している箇所は[ここ](https://github.com/heroku/heroku-maven-
plugin/blob/da39b958fbc53f0c17b217515e09a1322aedad76/heroku-
deploy/src/main/java/com/heroku/sdk/deploy/util/HerokuCli.java#L16)だとわかります。

クラス名やメソッド名などから、この部分は認証情報を取得している処理で、`heroku-maven-plugin` は Heroku CLI
でログイン済みの環境で実行されることが前提の作りになっている、ように思われます。

GitHub Actions環境では、未認証のユーザがdeployを行おうとしている形になっているため今回のエラーが発生しているのだと考えます。

同じ事象がGitHubのissuesに登録されているようです:

  * [Unable to use the plugin in Github Actions due to a "Index 0 out of bounds for length 0" #88](https://github.com/heroku/heroku-maven-plugin/issues/88)
CC BY-SA 4.0
2021-08-05T18:12:01.490
80625
2021-08-05T18:12:01.490
2808
80594
answer