7

Heroku 支持基于 Maven 部署 Java 应用

如果需要公共 maven 存储库中不可用的库,他们还会为应用程序部署提供建议

但是:我有两个 Maven 项目,其中一个依赖于另一个。当我在本地 mvn 安装依赖工件时,我可以 mvn 打包另一个并且一切正常。但是,我无法将其推送到 heroku,因为 heroku 无法访问我的本地 mvn 存储库。

我能做些什么?是否有必要在 web 上设置一个可供 heroku 访问的私有 maven 存储库(例如 artifactory),或者是否有任何其他方法可以部署这样一个自定义依赖于 heroku 的应用程序?

谢谢。

4

4 回答 4

2

Heroku 有一个替代部署路径,称为Anvil,这可能会有所帮助。使用此路径,您可以使用所需的任何私有库在本地构建所有内容,并将所有依赖项复制到目标目录中,然后使用 Anvil 构建并将整个内容发布到您的 Heroku 应用程序。默认情况下,Anvil 会将您的应用程序检测为 Java 并尝试再次构建它,但您可以通过指定null buildpack来覆盖它,这会告诉它按原样获取您的文件,因为您已经在本地进行了构建。用一个例子可能会更好地说明这一点:

  1. 安装铁砧:

    heroku plugins:install https://github.com/ddollar/heroku-anvil

  2. 克隆已经copy-dependencies在其pom.xml. 您需要在自己的应用程序中进行配置:

    git clone git://github.com/heroku/template-java-jaxrs.git

  3. 进入目录并构建应用程序,它将运行copy-dependencies. 这很关键,因为您需要应用程序target目录中的所有依赖项,而不是~/.m2/repositoryHeroku 将能够找到它们:

    mvn package

  4. 创建 Heroku 应用程序:

    heroku create

  5. 使用 Anvil 使用 null buildpack 构建并发布到应用程序:

    heroku build -b https://github.com/ryandotsmith/null-buildpack.git -r

于 2012-08-23T00:09:38.803 回答
1

看看我们如何使用实时开源 Web 应用程序:pom.xml。该应用程序使用 Maven 和 Ant 部署到 Heroku。我们自动执行git clone,然后将新文件复制到文件夹中,然后执行git commit && git push. 重要的是我们使用maven-invoker-plugin它来下载 Heroku slug 中的工件。

于 2012-08-27T19:58:55.723 回答
0

截至 2018 年 8 月,我建议使用Heroku Maven 插件

它允许在本地构建应用程序,然后将 artefact 推送到 Heroku。它解决了我与本地 Maven 依赖项有关的问题。

Spring Boot 应用程序的示例配置:

<build>
    <plugins>
        <plugin>
            <groupId>com.heroku.sdk</groupId>
            <artifactId>heroku-maven-plugin</artifactId>
            <version>2.0.5</version>
            <configuration>
                <appName>${heroku.appName}</appName>
                <processTypes>
                    <web>java -Dserver.port=$PORT $JAVA_OPTS -jar target/${project.build.finalName}.jar</web>
                </processTypes>
            </configuration>
        </plugin>
    </plugins>
</build>

如果您使用的是Heroku CLI,那么${heroku.appName}将自动解析。

于 2018-08-16T09:54:41.437 回答
0

您需要一个 Maven 存储库。如果你的项目在 GitHub 上,那么你可以使用JitPack。它将构建您的代码并发布一个 jar。

网站上有说明和文档。基本上将 JitPack 添加为存储库,然后将您的项目添加为依赖项。

于 2015-09-28T15:54:21.810 回答