Laufen Feder-app mit gradle auf Heroku
Ich habe ein problem mit meinem Spring-Anwendung gebaut mit Gradle. App enthält MongoDB(MongoHQ von Heroku).
Habe ich es geschafft, wie Sie schieben alles auf heroku, ich habe diesen code zu meinem Projekt:
@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());
}
}
Nach dem Wechsel buildpacks, um mit gradle, ich schob alles auf Heroku account mit MongoHQ Sandbox.
Aber nach dem Versuch, meine app über einen web-browser, ich bekomme diese Fehlermeldung:
Fehler in der Anwendung und Ihre Seite konnte nicht serviert werden. Bitte versuchen Sie es in wenigen Augenblicken.
Wenn Sie die Anwendung Besitzer, überprüfen Sie die Protokolle für details.
heroku logs
gibt mir folgende Ausgabe:
2014-10-15T18:19:30.293964+00:00 heroku[web.1]: Starting process mit dem Befehl
java -Xmx384m -Xss512k -XX:+UseCompressedOops -jar build/libs/*.jar
2014-10-15T18:19:30.797673+00:00 app - [web.1]: Error: Unable to access (jar-Datei) build/libs/*.jar
2014-10-15T18:19:31.474525+00:00 heroku[web.1]: Zustand geändert, starten abgestürzt
2014-10-15T18:19:31.464753+00:00 heroku[web.1]: Process exited with status 1
2014-10-15T18:19:32.577398+00:00 heroku[router]: at=error code=H10 desc="die App ist abgestürzt" 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="die App ist abgestürzt" 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="die App ist abgestürzt" 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=
Ich denke, das problem ist im Procfile, aber ich habe keine Ahnung, was sollte ich hinzufügen, dass es, hier ist meine aktuelle code:
default_process_types:
web: java $JAVA_OPTS -jar build/libs/*.jar
BEARBEITET
Hier mein 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'])
Dank im Voraus für Eure Hilfe.
- Warum gehst Du nicht fügen Sie eine Aufgabe, die Kopien der integrierten Artefakt aus
build/lib
zuproject.rootDir
(Umbenennung entsprechend) und starten Sie die Anwendung aus dem root-dir? Es scheint, dass es keine jar gebaut. - Können Sie erklären, wie kann ich es tun?
- Füge ich eine Antwort in einer minute.
- Ok, wieder einmal. Es scheint, dass es eine jar-Datei fehlt. Wie Sie das vorsehen, dass die jar? Führen Sie gradle auf heroku oder Begehen der integrierten spring-boot-Anwendung (jar) auf heroku mit source-control?
- Ich bin mit diesem buildpack: [devcenter.heroku.com/articles/buildpacks], das ist es. Es ist meine erste gradle-app auf heroku, also vielleicht habe ich etwas verpasst.
- Haben Sie alles gemacht, nach dieser Anleitung: github.com/heroku/heroku-buildpack-gradle ?
- Und auch, können, die Sie teilen, die Sie bauen.gradle bitte?
- Ich denke also, ich habe die Frage bearbeitet und Hinzugefügt, build.gradle
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach einer kurzen Diskussion in den Kommentaren scheint es (nach diese Anweisungen), die Sie benötigen, fügen Sie die folgende Aufgabe zu
build.gradle
Datei:Werden und der Inhalt
Procfile
werden:Nun sollte es funktionieren.
Erklärung:
Aufgabe
stage
bereitet die jar-Datei ausgeführt werden. Nachdem es fertig ist die output-jar kopiert inproject.rootDir
umbenannt inapp.jar
. Es garantiert, dass es immer die gleichen Namen und lassen sich leicht ausführen mit dem Befehl ausProcfile
.stage
Aufgabe hängt auch davon abclean
(die hat eine zusätzliche Aktion zu entfernenapp.jar
) undbuild
(die baut der app). Es ist wichtigstage.mustRunAfter(clean)
weil sonst die Reihenfolge, in der die Aufgaben ausgeführt werden, ist nicht festgelegt (dies geschieht wahrscheinlich jetzt überprüfen Sie es lokal). Was ich meine ist, wenn nurdependsOn
angegeben istbuild
ausgeführt werden kann, dannclean
und schließlichstage
- und nichts erstellt wird. Ich hoffe, es ist klar.server.port = 8080
? Oder sollte ich etwas anderes tun? Da das hinzufügen dieser immer noch nicht mein problem lösen.-Dserver.port=$PORT
zu Procfile?web: java $JAVA_OPTS -Dserver.port=$PORT -jar app.jar
Ich habe ein Beispiel, so noobies können Sie wirklich überprüfen Sie Sie heraus und verstehen, dass jede Zeile code. Weil ich wirklich weiß, wie frustrierend dies sein kann, herauszufinden.
Dies ist, was Ihr Procfile Aussehen sollte
Dies ist, was Ihr Gradle-Datei Aussehen sollte
Wenn die
gradlew
undgradlew.bat
sind nicht in Ihrem Haupt-Projekt-Verzeichnis oder ist nicht up-to-date dann in cmd den Befehl ausführengradle wrapper
.Wenn Sie nicht über Gradle tatsächlich auf Ihrem computer installiert, installieren Sie es von der Haupt-gradle-website.
Mein Beispiel ist auf github unter.
https://github.com/arose13/Heroku-Spring-Gradle_Example