【问题标题】:maven-compiler-plugin argument string exceeds OS X Terminal limitmaven-compiler-plugin 参数字符串超出 OS X 终端限制
【发布时间】:2013-07-26 08:47:06
【问题描述】:

我正在更新我正在处理的项目的 POM 中不同依赖项和插件的版本。其中一项更新是将 maven-compiler-plugin 从 2.3.2 版本升级到 3.1。执行此操作后,项目中的某些组件现在不再成功构建。给出的唯一错误是:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project project-name: Compilation failure -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project project-name: Compilation failure

当使用 -X 开关运行 maven 时,我们还看到日志中有一大块文本。我们成功地通过 javac 运行了这段文本,发现问题基本上归结为参数字符串(即命令行选项)太长,OS X 中的 Bash 无法处理。

-bash: /usr/bin/javac: Argument list too long

我也尝试逐渐增加版本号,问题从 maven-compiler-plugin 3.0 版开始。

这是插件在 POM 中的导入方式:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
        <verbose>true</verbose>
        <encoding>UTF-8</encoding>
        <source>1.6</source>
        <target>1.6</target>
    <forceJavacCompilerUse>true</forceJavacCompilerUse>
    </configuration>
</plugin>

命令行选项中显然有超过 350k 个字符,OS X 终端无法处理这些字符。 OS X 的 ARG_MAX 是 32 kb,而 Linux Ubuntu 似乎支持 256 kb。 Linux Ubuntu 使用新版本顺利编译程序,所以对我来说这基本上证实了我们的怀疑。

因此,我的问题归结为两件事:

1) 我们能否让 Maven 给我们一个正确的错误消息,而不是需要通过 javac 手动运行的大块文本? (任何其他错误都按应有的方式进行处理,并显示在正确的错误消息中)。我们尝试了几个设置,但都没有成功。

2) 是否有一个修复程序可以 a) 阻止 Maven 生成这种大小的参数字符串(某事 显然从 2.3.2. 到 3.1 版本发生了),或者 b) 增加 MAX_ARG在 OS X 上?

【问题讨论】:

标签: java macos bash maven javac


【解决方案1】:

我以前一直得到这些,我养成了将 M2_REPO 移动到更接近根目录的习惯,例如 /java/m2/r 通过添加

  <localRepository>/java/m2/r</localRepository>

致我的~/.m2/settings.xml

【讨论】:

  • 即使在此之后,参数字符串实际上仍然太长。有趣的是,这显然只是将 maven-compiler-plugin 升级到 3.0 版后出现的问题,而在 2.5.1 版上不是问题。另一个有趣的事情是,告诉 Maven 使用 eclipse 编译器实际上解决了这个问题。然而,在这个项目中,转而使用 eclipse 编译器并不是我们可以轻易做到的。
【解决方案2】:

删除整个 ~/.m2/repository 终于为我工作了。

【讨论】:

    猜你喜欢
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 2021-12-19
    相关资源
    最近更新 更多