我正在使用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
文件夹,即使我在本地打包项目时也是如此。
答案 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