将多个Maven项目部署到heroku

时间:2019-02-26 18:04:23

标签: java maven heroku

我有多个Maven项目,如下图所示。

    .git

    folder a -> contains main class and with jetty server.

    | 
      main class
    |
      pom.xml

    folder b
    |
     other implementation classes of interface present in folder c
    |
     pom.xml

    folder c
    | 
      Models(Pojo)
    |
      Controller(Rest Controller)
    |
      pom.xml

以上3个文件夹已添加到类路径中,并在本地环境中完美运行。但是当我尝试将其托管在heroku服务器中时,构建的bcoz失败 以下原因。

此应用无法检测到默认语言。 remote:提示:当Heroku无法自动检测到要用于该应用程序的buildpack时,就会发生这种情况。 远程:请参见https://devcenter.heroku.com/articles/buildpacks

我的pom.xml位于子文件夹中,而主类位于文件夹a中。

我可以在根文件夹中再添加一个pom.xml并将其指向foldera的pom.xml吗? 或者我如何使用可执行jar托管它?

请帮助?

2 个答案:

答案 0 :(得分:0)

您在根目录中需要一个pom.xml,然后将其配置为将子目录作为模块。看起来像这样:

<modules>
  <module>folder-a</module>
  <module>folder-b</module>
  <module>folder-c</module>
</modules>

您可能还需要在子模块中配置父pom.xml。有关更多信息,请参见Maven Modules docs

这取决于您是要构建所有这些子模块还是仅构建一个。如果要全部构建它们,请使用指向Procfile或其他任何内容的java命令向根目录添加folder-a/target/myapp.jar

如果只想运行一个子模块,则仍然需要Procfile,但是您还需要通过运行以下命令将-pl选项添加到Maven:

$ heroku config:set MAVEN_CUSTOM_OPTS="-pl folder-a"

然后,下次部署时,Heroku将运行maven,以便仅构建folder-a中的模块。

答案 1 :(得分:0)

此错误消息表示Heroku无法自动检测到您要部署的应用程序类型:Ruby,Node,Python,PHP,Java等。它会为每种支持的语言(例如pom)寻找签名.xml文件或package.json文件)。这通常意味着一个重要文件package.json不会被检入您的git存储库中:

您应该git添加{file},git commit -am'add {file}',然后git push heroku master

更多信息:ref:https://help.heroku.com/1MC2J0GF/why-does-my-app-fail-to-detect-a-buildpack