I am trying to build and test a JavaFX application on a headless build server. Locally I am using TestFX and Monocle https://github.com/TestFX/Monocle and its working fine. However, I had to manually install Monocle into the java Extensions folder as per this question: JavaFX + maven + TestFX + monocle don't work together
Now I need to use a headless build server to automate our deployment. I can't figure out how to get this Java extension installed correctly with Maven, without doing it manually. This seemed to be the right feature: https://maven.apache.org/pom.html#Extensions,
<extensions>
<extension>
<groupId>org.testfx</groupId>
<artifactId>openjfx-monocle</artifactId>
<version>8u76-b04</version>
</extension>
</extensions>
but the tests fail with a NoClassDefFoundException (which doesn't happen if I manually build the jar into the Extensions). I don't know how to debug this, or if I'm even using the right feature. Any suggestions?
I had a similar headache some time ago. I solved it by copying both
openjfx-monocle
and all extensions from the extensions folder in a folder under/target
and then set the extensions system property to that path. This way I could avoid theNoClassDefFoundException
and also successfully run all test on Jenkins. Here is the profile part:In my case I copied the monocle jar from maven in the
src/test/resources
folder. This can further be improved by using Maven Dependency Plugin to copy the monocle jar directly with maven instead having it insrc/test/resources
.