java-Heroku无法访问jetty-runner jar文件

我正在使用jetty-runner.jar将Spring MVC应用程序部署到Heroku,但是在部署中遇到错误.
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软件包”命令时,在我的计算机中正确创建了“ 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文件.依赖文件夹不是在部署时创建的,即使是在本地打包项目时也是如此.

解决方法:

当您尝试在Heroku上构建应用程序时,您的maven-clean-plugin会删除依赖关系目录和其他必需目录中的jar文件.

您可以删除pom.xml中的maven-clean-plugin或对其进行修改.

最好的选择是删除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>

或者,您可以通过简单地添加< exclude> ..< / exclude>来排除依赖项/*.jar.标签,如下所示.但是此选项可能会删除其他必需的文件夹,这些文件夹是成功部署应用程序所必需的.所以我不建议这样做.

    <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.

上一篇:eclipse修改osgi中启动jetty的端口号


下一篇:java-Spring Boot Rest服务表单太大