【问题标题】:Maven compiler plugin failure?Maven编译插件失败?
【发布时间】:2013-09-28 00:34:13
【问题描述】:

在我确定之前,已经以多种方式提出了这个问题。

我的环境细节:

以下提交审核(太大,无法在此处粘贴和格式化):

以下是我验证的关于我的环境的一些事情...

[jenkins@lx64etseapp04 workspace]$ set | grep JAVA
JAVA=/usr/java/jdk1.6.0_45/bin
JAVA_HOME=/usr/java/jdk1.6.0_45

[jenkins@lx64etseapp04 workspace]$ mvn -version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 05:51:28-0800)
Maven home: /opt/apache-maven-3.0.5
Java version: 1.6.0_45, vendor: Sun Microsystems Inc.
Java home: /usr/java/jdk1.6.0_45/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.11.1-200.fc19.x86_64", arch: "amd64", family: "unix"

[jenkins@lx64etseapp04 workspace]$ java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

[jenkins@lx64etseapp04 workspace]$ javac -version
javac 1.6.0_45

[jenkins@lx64etseapp04 workspace]$ which java
/usr/java/jdk1.6.0_45/bin/java

[jenkins@lx64etseapp04 workspace]$ set | grep PATH
PATH=/usr/java/jdk1.6.0_45/bin:/opt/TEE-CLC-11.0.0:/opt/apache-maven-3.0.5/bin:   /usr/java/jdk1.6.0_45/bin:/opt/apache-ant-1.9.2/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/var/lib/jenkins/.local/bin:/var/lib/jenkins/bin
QT_PLUGIN_PATH=/usr/lib64/kde4/plugins:/usr/lib/kde4/plugins
local cmd PATH=$PATH:/sbin;
if [[ -z "${CDPATH:-}" || "$cur" == ?(.)?(.)/* ]]; then
for i in ${CDPATH//:/'
PATH=$PATH:/usr/sbin:/sbin:/usr/local/sbin type $1 &>/dev/null
COMPREPLY=($( compgen -W "$( PATH="$PATH:/sbin" lsmod |         awk '{if (NR != 1) print $1}' )" -- "$1" ))
local PATH=$PATH:/sbin;
local PATH="$PATH:/sbin:/usr/sbin";
COMPREPLY+=($( compgen -W         "$( PATH="$PATH:/sbin" lspci -n | awk '{print $3}')" -- "$cur" ))
local PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin;
COMPREPLY+=($( compgen -W         "$( PATH="$PATH:/sbin" lsusb | awk '{print $6}' )" -- "$cur" ))

[jenkins@lx64etseapp04 workspace]$ uname -r
3.11.1-200.fc19.x86_64

[jenkins@lx64etseapp04 workspace]$

更新 我认为我的问题可能与 maven-compiler-plugin 有关,但我不能排除环境配置。如上所示,maven-compiler-plugin 失败了。

为什么 Maven 说要使用 JRE 而不是 JDK? JDK 确实安装了!

这里有一些mvn -X 输出...

[DEBUG] Configuring mojo org.apache.maven.plugins:maven-compiler-plugin:3.1:compile from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-compiler-plugin:3.1, parent: $
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-compiler-plugin:3.1:compile' with basic configurator -->
[DEBUG]   (f) basedir = /var/lib/jenkins/jobs/ETSE(3.0.x)-JavaProjects/workspace/common
[DEBUG]   (f) buildDirectory = /var/lib/jenkins/jobs/ETSE(3.0.x)-JavaProjects/workspace/common/target
[DEBUG]   (f) classpathElements = [/var/lib/jenkins/jobs/ETSE(3.0.x)-JavaProjects/workspace/common/target/classes, /var/lib/jenkins/.m2/repository/com/etp/commons/commons-log-persi$
[DEBUG]   (f) compileSourceRoots = [/var/lib/jenkins/jobs/ETSE(3.0.x)-JavaProjects/workspace/common/src/main/java]
[DEBUG]   (f) compilerArgument = -Xlint:all
[DEBUG]   (f) compilerId = javac
[DEBUG]   (f) compilerVersion = 1.6
[DEBUG]   (f) debug = true
[DEBUG]   (f) encoding = UTF-8
[DEBUG]   (f) failOnError = true
[DEBUG]   (f) forceJavacCompilerUse = false
[DEBUG]   (f) fork = true
[DEBUG]   (f) generatedSourcesDirectory = /var/lib/jenkins/jobs/ETSE(3.0.x)-JavaProjects/workspace/common/target/generated-sources/annotations
[DEBUG]   (f) maxmem = 512m
[DEBUG]   (f) meminitial = 128m
[DEBUG]   (f) mojoExecution = org.apache.maven.plugins:maven-compiler-plugin:3.1:compile {execution: default-compile}
[DEBUG]   (f) optimize = false
[DEBUG]   (f) outputDirectory = /var/lib/jenkins/jobs/ETSE(3.0.x)-JavaProjects/workspace/common/target/classes
[DEBUG]   (f) projectArtifact = com.etse:etse-common:jar:3.0.3-SNAPSHOT
[DEBUG]   (f) showDeprecation = true
[DEBUG]   (f) showWarnings = true
[DEBUG]   (f) skipMultiThreadWarning = false
[DEBUG]   (f) source = 1.6
[DEBUG]   (f) staleMillis = 0
[DEBUG]   (f) target = 1.6
[DEBUG]   (f) useIncrementalCompilation = true
[DEBUG]   (f) verbose = true
[DEBUG]   (f) mavenSession = org.apache.maven.execution.MavenSession@2df30035
[DEBUG]   (f) session = org.apache.maven.execution.MavenSession@2df30035
[DEBUG] -- end configuration --
[DEBUG] Using compiler 'javac'.
[DEBUG] Source directories: [/var/lib/jenkins/jobs/ETSE(3.0.x)-JavaProjects/workspace/common/src/main/java]

【问题讨论】:

  • 发布您的pom.xmlmvn -X 的实际输出。
  • 我的pom.xml 很大。您是否正在寻找 maven-compiler-plugin 的输出是什么?
  • 我的 maven 为我做同样的事情。 JDK 使用 JRE 运行。 JDK 是 JRE 加上一个编译器和工具。

标签: java maven jenkins fedora


【解决方案1】:

mvn --version 输出判断,它使用的是您告诉它使用的Java 安装;即你在/usr/java/jdk1.6.0_45中安装的那个。

为什么 Maven 说它想使用 JRE 而不是 JDK?

不是这么说的。它只是告诉您它已将其 JAVA_HOME 变量设置为什么,并且该设置对于 JDK 安装看起来是正确的。

我希望您的 maven-compiler-plugin 失败的原因是其他原因。但是您没有包括确定那是什么所需的信息。应该有一些较早的输出(列出编译错误!)。如果这没有帮助,请重新运行带有-e 选项的mvn 命令(如插件失败消息所建议的那样!!)并告诉我们它的含义。


一般来说,如果过早关注某个特定理论来说明构建失败的原因是一个坏主意,而更糟糕的想法是只向您想要帮助您的人展示证据这与你的理论有关。

【讨论】:

  • 这(已经)结束了非常漫长的一周故障排除和修复与将 Windows / TFS / Jenkins / Maven 构建转换为 Fedora / TEE-CLC / Jenkins / Maven 构建相关的各种问题。过去在 Windows 上完美运行的东西在 Linux 上受到配置的痛苦。该项目的 Pom.xml 在前者基础上构建良好,但在后者基础上构建良好。源代码没有编译问题。所以-e-X 不会显示任何内容。
  • 我的原始标题为-1,并且没有提供更多信息来帮助您帮助我......所以这是我的第二次尝试。道歉,但这是一条漫长的锄头路。大量的学习和挫折。
  • 对于我已经提出的建议,我没有什么要补充的。
【解决方案2】:

这篇文章为我的特定环境和多模块 Maven 构建所需的修复提供了线索。

我将maven-compiler-plugin 的版本从3.1 降级为2.3.2,我的构建继续进行,没有失败。

不确定真正的根本原因是什么(猜测编译器警告可能被视为错误)。 mvn -e 对我没有多大帮助,mvn -X 也没有。经过多次谷歌搜索尝试后,我才找到上述帖子。

【讨论】:

    猜你喜欢
    • 2013-03-07
    • 2021-06-27
    • 2018-01-02
    • 2016-10-28
    • 1970-01-01
    • 2018-11-22
    • 2019-07-22
    相关资源
    最近更新 更多