У меня есть многомодульное приложение с весенней загрузкой, и я использую Citrus Framework для написания интеграционных тестов.
Я использую профиль maven для запуска интеграционных тестов в Docker-контейнере. Тем не менее, я получаю сбой сборки с сообщением
Разветвленная виртуальная машина прервалась без должного прощания
и стек ошибок, как показано ниже.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:04 min
[INFO] Finished at: 2018-08-25T15:59:45+05:30
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-failsafe-plugin:2.22.0:verify (default) on project kt-tourle
ader-integration-tests: There are test failures.
[ERROR]
[ERROR] Please refer to C:\dev\sourcecode\bitbucket\kt-tourleader\kt-tourleader-integration-tests\target\failsafe-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] org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM terminated without properly saying goo
dbye. VM crash or System.exit called?
[ERROR] Command was cmd.exe /X /C "C:\dev\plang\java\jdk1.8.0_172\jre\bin\java -jar C:\Users\811361\AppData\Local\Temp\sur
efire7907863986784178610\surefirebooter5648218167016296478.jar C:\Users\811361\AppData\Local\Temp\surefire7907863986784178
610 2018-08-25T15-56-45_274-jvmRun1 surefire7488758955999237834tmp surefire_07817517722767731539tmp"
[ERROR] Process Exit Code: 0
[ERROR] Crashed tests:
[ERROR] com.kt.tourleader.api.client.TourleaderRestApiCitrusIT
[ERROR] at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:671)
[ERROR] at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:533)
[ERROR] at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:278)
[ERROR] at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:244)
[ERROR] at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1194)
[ERROR] at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefire
Mojo.java:1022)
[ERROR] at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:868)
[ERROR] at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117
)
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
[ERROR] at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBu
ilder.java:56)
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
[ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
[ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
[ERROR] at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
[ERROR] at org.apache.maven.cli.MavenCli.execute(MavenCli.java:954)
[ERROR] at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
[ERROR] at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
[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(Launcher.java:289)
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[ERROR] -> [Help 1]
Странно, когда я запускаю тесты с ключом "-X", чтобы включить полное ведение журнала отладки, тогда сборка завершается успешно.
Вот конфигурация плагина в pom-файлах.
Родитель pom.xml
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<configuration>
<includes>
<include>**/*Test.java</include>
</includes>
<excludes>
<exclude>**/*IT.java</exclude>
</excludes>
<forkCount>1C</forkCount>
<reuseForks>true</reuseForks>
<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${failsafe.version}</version>
<executions>
<execution>
<id>integration-tests</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<forkCount>1C</forkCount>
<reuseForks>true</reuseForks>
<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
<failIfNoTests>false</failIfNoTests>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.26.1</version>
</plugin>
</plugins>
</pluginManagement>
<!-- default plugin for all modules -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>docker</id>
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<executions>
<execution>
<id>start</id>
<phase>pre-integration-test</phase>
<goals>
<goal>stop</goal>
<goal>build</goal>
<goal>start</goal>
</goals>
</execution>
<!-- <execution> <id>clean image</id> <phase>post-integration-test</phase>
<goals> <goal>stop</goal> </goals> </execution> -->
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
pom.xml модуля, содержащего актуальные REST API на основе весенней загрузки
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.kt.tourleader.Swagger2SpringBoot</mainClass>
<classifier>exec</classifier>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<images>
<image>
<name>kt-tourleader-rest-api-dockerimage:${project.version}</name>
<alias>kt-tourleader-rest-api-dockerimage</alias>
<build>
<dockerFileDir>${project.basedir}</dockerFileDir>
</build>
<run>
<namingStrategy>alias</namingStrategy>
<ports>
<port>9999:8989</port>
</ports>
<log>
<prefix>TC</prefix>
<date>default</date>
<color>cyan</color>
</log>
</run>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
В файле pom.xml модуля интеграционных тестов нет конкретной конфигурации.
Как показано в родительском pom.xml, я использую версию 0.26.1 maven-docker-plugin.
Когда я запускаю команду ошибки, показанную в трассировке стека ошибок, я получаю следующее сообщение.
cmd.exe /X /C "C:\dev\plang\java\jdk1.8.0_172\jre\bin\java -jar C:\Users\811361\AppData\Local\Temp\surefire1876047502962221585\surefirebooter5968414325723209179.jar C:\Users\811361\AppData\Local\Temp\surefire1876047502962221585 2018-08-25T16-23-23_039-jvmRun1 surefire7969799570305236720tmp surefire_01549635010934355144tmp"
Ошибка: невозможно получить доступ к jarfile C: \ Users \ 811361 \ AppData \ Local \ Temp \ surefire1876047502962221585 \ surefirebooter5968414325723
209179.jar
Что здесь может быть не так и как я могу это исправить?