[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#31943: Some Maven bugs
From: |
Björn Höfling |
Subject: |
bug#31943: Some Maven bugs |
Date: |
Sat, 23 Jun 2018 00:39:35 +0200 |
Maven is now part of Guix, yeah! I gave it a try and found some bugs
which I post collectively here. I don't know yet where exactly they
come from and if they are trivial or not to fix. So if you think they
should better go each into a separate bug report, please separate them.
For reference, I'm on Ubuntu with:
$> guix pull --list-generations | tail --lines=6
guile: warning: failed to install locale
warning: failed to install locale: Invalid argument
Generation 2 Jun 22 2018 21:53:40 (current)
guix 18ab54d
repository URL: https://git.savannah.gnu.org/git/guix.git
commit: 18ab54d4a2aaf932b14e69c30650c1d2c4db33c7
1) The following propagated inputs are used from bash scripts
and are missing: which, coreutils
$> guix environment -C --ad-hoc maven address@hidden:jdk -- mvn
/gnu/store/sk23y72hma8x6n5ch6xqgql1q93dg7if-profile/bin/mvn: line 46: uname:
command not found
/gnu/store/sk23y72hma8x6n5ch6xqgql1q93dg7if-profile/bin/mvn: line 56: ls:
command not found
/gnu/store/sk23y72hma8x6n5ch6xqgql1q93dg7if-profile/bin/mvn: line 57: expr:
command not found
/gnu/store/sk23y72hma8x6n5ch6xqgql1q93dg7if-profile/bin/mvn: line 58: expr:
command not found
/gnu/store/sk23y72hma8x6n5ch6xqgql1q93dg7if-profile/bin/mvn: line 61: dirname:
command not found
/gnu/store/sk23y72hma8x6n5ch6xqgql1q93dg7if-profile/bin/mvn: line 67: dirname:
command not found
/gnu/store/sk23y72hma8x6n5ch6xqgql1q93dg7if-profile/bin/mvn: line 94: which:
command not found
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
2) There is something wrong with the version output:
$> guix environment -C --ad-hoc maven address@hidden:jdk coreutils which --
mvn -version
null <version unknown>
${distributionShortName} home:
/gnu/store/a19m087lz9fg4c2aplvdlm1y2iiibjdb-maven-3.5.3
Java version: 1.8.0_161, vendor: Oracle Corporation
Java home: /gnu/store/7dah2ha88f4sxakpgdlbfn6mvs842j6w-icedtea-3.7.0-jdk/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "4.4.0-128-generic", arch: "amd64", family: "unix"
Compare this to my "native" Ubuntu maven:
$> /usr/bin/mvn -version
Apache Maven 3.3.9
Maven home: /usr/share/maven
Java version: 1.8.0_161, vendor: Oracle Corporation
Java home: /gnu/store/8yfdmh7hsnfq87ddcyjz5nxk5f208pmc-icedtea-3.7.0-jdk/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "4.4.0-128-generic", arch: "amd64", family: "unix"
3) The -version part is already handled by Java code. So I tried to
debug Maven remotely from Eclipse, but it failed with a message saying
that debug symbols were missing. I want to verify this again, but could
this be a problem of the ant-build-system removing debug symbols?
4) I cannot use icedteaX (x \in {1,2}) (i.e. X=2 means JDK 1.7) with
Maven. Is this a bug or a fact?
$> guix environment -C --ad-hoc maven address@hidden:jdk coreutils which --
mvn -version
Exception in thread "main" java.lang.UnsupportedClassVersionError:
org/apache/maven/cli/MavenCli : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:442)
at java.net.URLClassLoader.access$100(URLClassLoader.java:64)
at java.net.URLClassLoader$1.run(URLClassLoader.java:354)
at java.net.URLClassLoader$1.run(URLClassLoader.java:348)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:347)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:312)
at java.lang.ClassLoader.loadClass(ClassLoader.java:412)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(Unknown
Source)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(Unknown
Source)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(Unknown
Source)
at
org.codehaus.plexus.classworlds.launcher.Launcher.getMainClass(Unknown Source)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Unknown Source)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Unknown
Source)
at
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Unknown
Source)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Unknown
Source)
Version 52.0 means Java 1.8. I think this is because we are now building
all Java packages with ant-build-system with address@hidden and letting it
output Java8 code. Right?
If this is the case anyway, we don't have any chance to choose a JDK to
run maven with (if we choose from Guix, not from other locations).
Should we then add address@hidden as a propagated input to maven? Then a
user can directly use Maven and doesn't have to think of installing a
JDK first. Mhm, maybe too strict and too heavy in size?
From now on I'm in a container with a fresh .m2 directory,
assuming "mvn-home" is an empty directory:
guix environment -C -N --share=mvn-home/=/home/bjoern/.m2 --ad-hoc maven
coreutils which address@hidden:jdk
5) Maven complains about the logger output:
$ENV> mvn clean install
[WARNING] The SLF4J binding actually used is not supported by Maven:
org.slf4j.impl.SimpleLoggerFactory
[WARNING] Maven supported bindings are:
[INFO] Scanning for projects...
[...]
When looking at the package definition of maven, I find in the inputs:
;; TODO: replace with maven-slf4j-provider
("java-slf4j-simple" ,java-slf4j-simple)))
Is this comment related to the WARNING? Will it go away with
maven-slf4j-provider?
6) Maven does not compile Java 1.8 code.
To reproduce this, build any Maven project that has either source or
target language version set to 1.8:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
As our Maven mostly works, you can just use:
$ENV> mvn archetype:generate
to create a new Maven project. Edit the pom.xml to set the versions.
Then [I head some problems with tests, so skipping them here]:
$ENV> mvn clean install -Dmvn.tests.skip=true -X -e
[..]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.171 s
[INFO] Finished at: 2018-06-22T22:17:21Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile)
on project tst2: Fatal error compiling: invalid source release: 1.8 -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal
org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile)
on project tst2: Fatal error compiling
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(Unknown
Source)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(Unknown
Source)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(Unknown
Source)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(Unknown
Source)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(Unknown
Source)
at
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(Unknown
Source)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Unknown
Source)
at org.apache.maven.DefaultMaven.doExecute(Unknown Source)
at org.apache.maven.DefaultMaven.doExecute(Unknown Source)
at org.apache.maven.DefaultMaven.execute(Unknown Source)
at org.apache.maven.cli.MavenCli.execute(Unknown Source)
at org.apache.maven.cli.MavenCli.doMain(Unknown Source)
at org.apache.maven.cli.MavenCli.main(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Unknown Source)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Unknown
Source)
at
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Unknown
Source)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Unknown
Source)
Caused by: org.apache.maven.plugin.MojoExecutionException: Fatal error compiling
at
org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1086)
at
org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:168)
at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Unknown Source)
... 21 more
Caused by: org.codehaus.plexus.compiler.CompilerException: invalid source
release: 1.8
at
org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:173)
at
org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:174)
at
org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1075)
... 23 more
Caused by: java.lang.IllegalArgumentException: invalid source release: 1.8
at
com.sun.tools.javac.main.RecognizedOptions$GrumpyHelper.error(RecognizedOptions.java:88)
at
com.sun.tools.javac.main.RecognizedOptions$9.process(RecognizedOptions.java:348)
at com.sun.tools.javac.api.JavacTool.processOptions(JavacTool.java:242)
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:199)
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:68)
at
org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:125)
... 25 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please
read the following articles:
[ERROR] [Help 1]
http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
7) I have some trouble executing the tests. This is indeterministic (!),
sometimes is is successful, sometimes I get an error:
$ENV> mvn clean install -X -e -B>stacktrace.log 2>&1; echo $?
[..]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running de.xxx.AppTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.981 s
[INFO] Finished at: 2018-06-22T22:27:49Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test (default-test) on
project tst2: There are test failures.
[ERROR]
[ERROR] Please refer to /home/bjoern/x/z/tst2/target/surefire-reports for the
individual test results.
[ERROR] Please refer to dump files (if any exist) [date]-jvmRun[N].dump,
[date].dumpstream and [date]-jvmRun[N].dumpstream.
[ERROR] The forked VM terminated without properly saying goodbye. VM crash or
System.exit called?
[ERROR] Command was /bin/sh -c cd /home/bjoern/x/z/tst2 &&
/gnu/store/7dah2ha88f4sxakpgdlbfn6mvs842j6w-icedtea-3.7.0-jdk/jre/bin/java -jar
/home/bjoern/x/z/tst2/target/surefire/surefirebooter4025948542605868366.jar
/home/bjoern/x/z/tst2/target/surefire 2018-06-22T22-27-48_542-jvmRun1
surefire4165566371678934740tmp surefire_02394075698289798736tmp
[ERROR] Error occurred in starting fork, check output in log
[ERROR] Process Exit Code: 1
[ERROR] org.apache.maven.surefire.booter.SurefireBooterForkException: The
forked VM terminated without properly saying goodbye. VM crash or System.exit
called?
[ERROR] Command was /bin/sh -c cd /home/bjoern/x/z/tst2 &&
/gnu/store/7dah2ha88f4sxakpgdlbfn6mvs842j6w-icedtea-3.7.0-jdk/jre/bin/java -jar
/home/bjoern/x/z/tst2/target/surefire/surefirebooter4025948542605868366.jar
/home/bjoern/x/z/tst2/target/surefire 2018-06-22T22-27-48_542-jvmRun1
surefire4165566371678934740tmp surefire_02394075698289798736tmp
[ERROR] Error occurred in starting fork, check output in log
[ERROR] Process Exit Code: 1
[ERROR] at
org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:686)
[ERROR] at
org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:535)
[ERROR] at
org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:280)
[ERROR] at
org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245)
[ERROR] at
org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1124)
[ERROR] at
org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:954)
[ERROR] at
org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:832)
[ERROR] at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Unknown Source)
[ERROR] at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(Unknown Source)
[ERROR] at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(Unknown Source)
[ERROR] at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(Unknown Source)
[ERROR] at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(Unknown
Source)
[ERROR] at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(Unknown
Source)
[ERROR] at
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(Unknown
Source)
[ERROR] at
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Unknown Source)
[ERROR] at org.apache.maven.DefaultMaven.doExecute(Unknown Source)
[ERROR] at org.apache.maven.DefaultMaven.doExecute(Unknown Source)
[ERROR] at org.apache.maven.DefaultMaven.execute(Unknown Source)
[ERROR] at org.apache.maven.cli.MavenCli.execute(Unknown Source)
[ERROR] at org.apache.maven.cli.MavenCli.doMain(Unknown Source)
[ERROR] at org.apache.maven.cli.MavenCli.main(Unknown Source)
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR] at java.lang.reflect.Method.invoke(Method.java:498)
[ERROR] at
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Unknown Source)
[ERROR] at
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Unknown Source)
[ERROR] at
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Unknown
Source)
[ERROR] at
org.codehaus.plexus.classworlds.launcher.Launcher.main(Unknown Source)
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal
org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test (default-test) on
project tst2: There are test failures.
[..]
8) BTW maven is NOT creating a reproducible output. That's important if
you want to use it to as a build tool for Guix:
$ENV> jar tvvf
~/.m2/repository/de/xxx/tst2/1.0-SNAPSHOT/tst2-1.0-SNAPSHOT.jar
110 Fri Jun 22 22:29:26 GMT 2018 META-INF/MANIFEST.MF
0 Fri Jun 22 22:29:26 GMT 2018 META-INF/
That's it for now.
Björn
pgpSt_4Yrl5pZ.pgp
Description: OpenPGP digital signature
- bug#31943: Some Maven bugs,
Björn Höfling <=