在 Heroku 上使用 gradle 构建的运行 Spring 应用程序
我用Gradle构建的Spring应用程序有问题。应用程序包括MongoDB(来自Heroku的MongoHQ)。
我设法在heroku上推送所有内容,我已将此代码添加到我的项目中:
@Configuration
public class MongoHQConfiguration {
public @Bean MongoDbFactory mongoDbFactory() throws MongoException, UnknownHostException {
return new SimpleMongoDbFactory(new MongoURI(System.getenv("MONGOHQ_URL")));
}
public @Bean MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(mongoDbFactory());
}
}
在将构建包更改为带有gradle的构建包后,我使用MongoHQ Sandbox将所有内容都推送到Heroku免费帐户上。
但是在尝试通过Web浏览器运行我的应用程序后,我收到此错误:
应用程序中发生错误,无法提供您的页面。请稍后重试。
如果您是应用程序所有者,请检查日志以了解详细信息。
heroku logs
给我这个输出:
2014-10-15T18:19:30.293964+00:00 heroku[web.1]: 使用命令启动进程
java -Xmx384m -Xss512k -XX:+UseCompressedOops -jar build/libs/*.jar
2014-10-15T18:19:30.797673+00:00 app[web.1]: 错误: 无法访问 jarfile build/libs/*.jar
2014-10-15T18:19:31.474525+00:00 heroku[web.1]: 状态从开始变为崩溃
2014-10-15T18:19:31.464753+00:00 heroku[web.1]: 进程退出,状态为 1
2014-10-15T18:19:32.577398+00:00 heroku[router]: at=error code=H10 desc=“App crashed” method=GET path=“/” host=tvmaniac.herokuap p.com request_id=7e8bfe6c-2669-405e-9bce-59fde09f71ef fwd=“89.129.247.185” dyno= connect= service= status=503 bytes=
2014-10-15T18:19:34.016281+00:00 heroku[router]: at=error code=H10 desc=“App crashed” method=GET path=“/favicon.ico” host=tvmani ac.herokuapp.com request_id=4300386e-dc5c-47ed-9878-0bee87128fc9 fwd=“89.129.247.185” dyno= connect= service= status=503 bytes=
2014-10-15T18:19:41.988204+00:00 heroku[router]: at=error code=H10 desc=“App crashed” method=GET path=“/” host=tvmaniac.herokuap p.com request_id=436db871-ea8c-428f-8cc7-160c3cb96a2d fwd=“50.16.146.194” dyno= connect= service= status=503 bytes=
我认为问题出在Procfile中,但我不知道我应该在那里添加什么,这是我当前的代码:
default_process_types:
web: java $JAVA_OPTS -jar build/libs/*.jar
编辑
这是我的build.gradle:
buildscript {
repositories {
maven { url "http://repo.spring.io/libs-release" }
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.1.8.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
mainClassName = "com.shalastra.tvmaniac.TVManiacConfiguration"
jar {
baseName = 'tvmaniac'
version = '0.1.0'
}
repositories {
mavenCentral()
maven { url "http://repo.spring.io/libs-release" }
maven { url "http://m2.neo4j.org" }
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.springframework.boot:spring-boot-starter-actuator")
testCompile("junit:junit")
compile("org.springframework.data:spring-data-rest-webmvc")
compile("org.springframework.data:spring-data-mongodb")
compile("com.google.guava:guava:17.0")
compile("org.apache.commons:commons-lang3:3.3.2")
}
task wrapper(type: Wrapper) {
gradleVersion = '2.0'
}
task stage(dependsOn: ['clean', 'build', 'installApp'])
提前感谢您的帮助。