如何在Heroku上部署java gradle应用程序

时间:2016-07-21 22:49:08

标签: java heroku gradle web-deployment procfile

请帮助在Heroku上部署我的应用程序。 从Heroku *获取错误消息

  

"应用程序错误。应用程序和页面中发生错误   无法提供服务。请稍后重试。如果你是   应用程序所有者,请检查日志以获取详细信息。"

这里从Heroku登录:

angular.module('hello', [/*'ngCookies',*/ 'ngRoute' ]).config(function($routeProvider, $httpProvider) {

    $routeProvider.when('/', {
        templateUrl : 'home.html',
        controller : 'home',
        controllerAs : 'controller'
    }).otherwise('/');

    $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

}).run(function ($rootScope, $cookies) {
    var cookieValue = $cookies.get("myCookie");
    if (cookieValue) {
        $rootScope.myCookieVar = cookieValue;
    }
}).controller('navigation',

function($rootScope, $http, $location, $route) {

    var self = this;

    self.tab = function(route) {
        return $route.current && route === $route.current.controller;
    };

    $http.get('user').then(function(response) {
        if (response.data.name) {
            $rootScope.authenticated = true;
        } else {
            $rootScope.authenticated = false;
        }
    }, function() {
        $rootScope.authenticated = false;
    });

    self.credentials = {};

    self.logout = function() {
        $http.post('logout', {}).finally(function() {
            $rootScope.authenticated = false;
            $location.path("/");
        });
    }

}).controller('home', function($http) {
    var self = this;
    $http.get('resource/').then(function(response) {
        self.greeting = response.data;
    })
});

我的gradle构建文件:

2016-07-21T22:11:30.966800+00:00 heroku[slug-compiler]: Slug compilation 
started 2016-07-21T22:11:30.773385+00:00 heroku[api]: Release v8 created by 
zzheads@gmail.com 2016-07-21T22:11:56.184847+00:00 heroku[router]: at=error 
code=H14 desc="No web processes running" method=GET path="/favicon.ico" 
host=zzheads-countries.herokuapp.com request_id=a03c9276-b038-4f9f-8e6d-
5f29f14b441 fwd="5.3.141.153" dyno= connect= service= status=503 bytes=

我的Proc文件:

group 'com.zzheads'
version '1.0-SNAPSHOT'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath  'org.springframework.boot:spring-boot-gradle-plugin:1.3.6.RELEASE'
    }
}

apply plugin: 'java'
apply plugin: 'spring-boot'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-thymeleaf")
}

task stage {
    dependsOn build
}

2 个答案:

答案 0 :(得分:2)

您的构建可能会在目录build/libs中生成可执行的JAR文件。在Procfile

中试试这个
web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/countries-1.0-SNAPSHOT.jar

您可以通过运行以下方式在本地测试:

$ ./gradlew stage
$ heroku local

答案 1 :(得分:0)

我认为Heroku无法找到您的.jar,因为当它找不到版本属性时,gradle buildpack只使用自己的构建ID。因此,在proc文件中的文件名下找不到.jar。您可以设置以下内容:

jar{
  baseName = 'countries-'
  version = '1.0-SNAPSHOT'
} 

所以Heroku接受了这些变量。请注意,如果您使用的是Spring Boot 2. *,则插件会禁用jar任务,并添加bootJar任务,然后您必须将这些任务设置为变量。

有了这个,平台应该能够很好地找到你的工件。

另外,运行heroku logs -a <your-app-name-here> -t您可以在调试时获得有关应用状态的更多信息