Heroku无法访问jetty-runner jar文件

时间:2015-11-24 08:23:37

标签: java spring maven heroku jetty

我正在使用jetty-runner.jar向Heroku部署Spring MVC应用程序,但我在部署中遇到错误。 Heroku日志只显示:

Error: unable to access jarfile target/dependency/jetty-runner.jar
State changed from starting to crashed
Process exited with status 1

但是,如果我使用以下任一方式在本地运行该应用程序,该应用程序正常运行:

heroku local web -f Procfile.windows

java -jar target\dependency\jetty-runner.jar target\*.war

运行“mvn package”命令时,在我的计算机中正确创建了“target / dependency / jetty-runner.jar”下的文件。

我的Procfile如下所示:

web: java $JAVA_OPTS -jar target/dependency/jetty-runner.jar --port $PORT target/*.war

我的pom.xml文件和项目代码位于: https://github.com/gfigueroa/nlp-tools-spring-heroku

其他详细信息

我在部署后运行了命令heroku run ls target,它只显示.war文件。部署时未创建dependency文件夹,即使我在本地打包项目时也是如此。

2 个答案:

答案 0 :(得分:2)

当您尝试在maven-clean-plugin上构建应用时,jar正在删除dependency目录中的Heroku文件和其他必需目录。

您可以删除maven-clean-plugin中的pom.xml,也可以修改它。

最佳选择是删除pom.xml中的以下插件

              <plugin>
                  <artifactId>maven-clean-plugin</artifactId>
                  <version>2.5</version>
                  <executions>
                    <execution>
                      <id>clean-jar-artifacts</id>
                      <phase>install</phase>
                      <goals><goal>clean</goal></goals>
                      <configuration>
                        <excludeDefaultDirectories>true</excludeDefaultDirectories>
                        <filesets>
                          <fileset>
                              <directory>target</directory>
                              <excludes>
                                <exclude>*.war</exclude>
                              </excludes>
                          </fileset>
                        </filesets>
                      </configuration>
                    </execution>
                  </executions>
                </plugin>

或者,您只需添加下面指定的dependency/*.jar代码,即可排除<exclude>..</exclude>。但是,此选项可能会删除成功部署应用程序所需的其他必需文件夹。所以我不推荐这个。

    <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>2.5</version>
                    <executions>
                        <execution>
                            <id>clean-jar-artifacts</id>
                            <phase>install</phase>
                            <goals>
                                <goal>clean</goal>
                            </goals>
                            <configuration>
                                <excludeDefaultDirectories>true</excludeDefaultDirectories>
                                <filesets>
                                    <fileset>
                                        <directory>target</directory>
                                        <excludes>
                                            <exclude>*.war</exclude>
                                            <exclude>dependency/*.jar</exclude>
                                        </excludes>
                                    </fileset>
                                </filesets>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

请查看此page以获取更多信息。

答案 1 :(得分:2)

我遇到了类似的问题,直到我用最新的jetty-runner(org.eclipse.jetty)添加到pom.xml文件中

<plugins>
   <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals><goal>copy</goal></goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                              <groupId>org.eclipse.jetty</groupId>
                              <artifactId>jetty-runner</artifactId>
                              <version>9.4.4.v20170414</version>
                       <destFileName>jetty-runner.jar</destFileName>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>

Procfile仅包含: web:java $ JAVA_OPTS -jar target / dependency / jetty-runner.jar --port $ PORT target / * .war