Search code examples
javamavenkotlintravis-ci

Build that passes locally fails on Travis


I have been trying to get more into the methodology of continuous integration as of recent, and have chosen Travis CI for the job. However, on one of my projects that uses Java and Kotlin my local builds pass, but fail on Travis.

I've been unable to make sense of the error messages that I am getting as to why my build is failing. kotlin-maven-plugin seems to be the origin of the errors. The problematic command as seen in the build logs is mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V. I have run this command locally with no errors and a successful build.

Here's a relevant snippet of the stack trace from the CI Build Job:

[INFO] --- kotlin-maven-plugin:1.4.32:compile (compile) @ BytesToJava ---
[ERROR] java.lang.ExceptionInInitializerError
    at com.intellij.pom.java.LanguageLevel.<clinit>(LanguageLevel.java:25)
    at com.intellij.core.CoreLanguageLevelProjectExtension.<init>(CoreLanguageLevelProjectExtension.java:26)
    at com.intellij.core.JavaCoreProjectEnvironment.<init>(JavaCoreProjectEnvironment.java:42)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment.<init>(KotlinCoreProjectEnvironment.kt:26)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.<init>(KotlinCoreEnvironment.kt:121)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:425)

Would appreciate some resources or even a relevant issue thread. Thanks in advance :)

Travis Build Logs


Solution

  • The problem was being caused by an issue with illegal reflective operations and the Kotlin Maven Plugin with any project over Java 9 (my project uses Java 15). As described by this thread on YouTrack, a workaround is to:

    A workaround is to run mvn with the following environment variable: MAVEN_OPTS=--illegal-access=permit

    Adding a global environment variable with the same value to my .travis.yml fixed the issue.