2

我正在将需要 Maven 3.0.4 的应用程序部署到 Heroku Cedar 堆栈,但构建失败并出现以下警告:

Rule 1: org.apache.maven.plugins.enforcer.RequireMavenVersion failed with message:
Build with Maven 3.0.4 or later. Maven 3.0 through 3.0.3 inclusive do not pass 
correct settings.xml to Maven Release Plugin.

我相信这个失败是由这个 Maven 错误引起的:

有什么方法可以配置 Heroku Cedar 以使用不同版本的 Maven?

4

2 回答 2

5

Fork Heroku Java Buildpack git 存储库,然后克隆它。

在编辑器中打开bin/compile。查找以下行:

# install maven with base repository
MAVEN_URL="http://s3.amazonaws.com/heroku-jvm-langpack-java/maven.tar.gz"

if [ ! -d .maven ]; then
  echo -n "-----> Installing Maven 3.0.3..."
  curl --silent --max-time 60 --location $MAVEN_URL | tar xz
  chmod +x .maven/bin/mvn
  echo " done"
fi

更改 MAVEN_URL 以从 Apache 下载 Maven 3.0.4:

MAVEN_URL="http://www.us.apache.org/dist/maven/maven-3/3.0.4/binaries/apache-maven-3.0.4-bin.tar.gz"

提交您的更改,然后配置您的 Heroku Cedar 实例以使用您的自定义 buildpack:

heroku config:add BUILDPACK_URL=[YOUR GITHUB REPO] --app [YOUR HEROKU CEDAR APP]

有关详细信息,请参阅 Heroku 的使用自定义 Buildpack的说明。

于 2012-11-03T19:39:43.133 回答
3

只要您创建自己的构建包,就可以做到这一点。看看我在https://github.com/jtzikas/heroku-buildpack-java上使用 maven 3.0.4 做了什么。

简而言之,我必须做的是更改 maven 位置的 uri,但也要更改目录结构,因为 heroku 包含 .m2 和 .maven 目录。需要这些目录才能运行脚本的其余部分。

# install maven without base repository
MAVEN_URL="http://www.us.apache.org/dist/maven/maven-3/3.0.4/binaries/apache-maven-3.0.4-bin.tar.gz"

if [ ! -d .maven ]; then
  echo -n "-----> Installing Maven 3.0.4..."
  curl --silent --max-time 60 --location $MAVEN_URL | tar xz
  mv apache-maven-3.0.4 .maven
  mkdir .m2
  chmod +x .maven/bin/mvn
  echo " done"
fi

.m2 目录是存储库位置,.maven 目录是 maven 安装位置。您需要将 maven 3.0.4 解压到 .maven 目录中,而不是 apache-maven-3.0.4,它是 maven 3.0.4 目录的根目录。不要忘记您需要创建一个空的 .m2 目录来托管 maven 存储库

查看 heroku 文档以获取有关如何使用自定义构建包的说明。

于 2012-11-08T19:00:23.673 回答