Ошибка инъекции JaCoCo при выполнении теста maven через ssh

Я пытаюсь настроить непрерывное интеграционное тестирование для моего проекта с открытым исходным кодом на удаленном сервере AIX. Я могу отлично выполнять тесты в интерактивной оболочке:

$ ssh gate.polarhome.com -p 775 -l oshi 
<password dialog>
<PATH set via .profile>
$ echo $PATH
> /usr/java8_64/bin:~/apache-maven-3.6.3/bin/:/opt/freeware/bin:/usr/local/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.
$ cd ~/git/oshi
$ mvn test -B

При выполнении в этой интерактивной среде с использованием именно этих шагов тест выполняется правильно. Однако при попытке выполнить идентичные команды через командную строку SSH плагин JaCoCo дает сбой:

$ ssh gate.polarhome.com -p 775 -l oshi "export PATH=/usr/java8_64/bin:~/apache-maven-3.6.3/bin/:/opt/freeware/bin:/usr/local/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.; cd ~/git/oshi; mvn test -B"

После ввода пароля команды проходят через mvn test, но затем завершаются ошибкой с исключением:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] Operating System and Hardware Information                          [pom]
[INFO] oshi-core                                                          [jar]
[INFO] oshi-core-shaded                                                   [jar]
[INFO] oshi-demo                                                          [jar]
[INFO] oshi-dist                                                          [pom]
[INFO] 
[INFO] --------------------< com.github.oshi:oshi-parent >---------------------
[INFO] Building Operating System and Hardware Information 5.3.7-SNAPSHOT  [1/5]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- git-commit-id-plugin:4.0.3:revision (git-commit-id) @ oshi-parent ---
[INFO] 
[INFO] --- build-helper-maven-plugin:3.2.0:parse-version (default) @ oshi-parent ---
[INFO] 
[INFO] --- maven-enforcer-plugin:3.0.0-M3:enforce (enforce-maven) @ oshi-parent ---
[INFO] 
[INFO] --- jacoco-maven-plugin:0.8.6:prepare-agent (pre-unit-test) @ oshi-parent ---
[WARNING] Error injecting: org.jacoco.maven.AgentMojo
java.lang.NoClassDefFoundError: org.jacoco.core.runtime.AgentOptions
    at java.lang.Class.getDeclaredMethodsImpl (Native Method)
    at java.lang.Class.getDeclaredMethods (Class.java:1008)
    at com.google.inject.spi.InjectionPoint.getDeclaredMethods (InjectionPoint.java:766)
    at com.google.inject.spi.InjectionPoint.getInjectionPoints (InjectionPoint.java:683)
    at com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields (InjectionPoint.java:378)
    at com.google.inject.internal.ConstructorBindingImpl.getInternalDependencies (ConstructorBindingImpl.java:182)
    at com.google.inject.internal.InjectorImpl.getInternalDependencies (InjectorImpl.java:661)
    at com.google.inject.internal.InjectorImpl.cleanup (InjectorImpl.java:617)
    at com.google.inject.internal.InjectorImpl.initializeJitBinding (InjectorImpl.java:603)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBinding (InjectorImpl.java:932)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive (InjectorImpl.java:852)
    at com.google.inject.internal.InjectorImpl.getJustInTimeBinding (InjectorImpl.java:291)
    at com.google.inject.internal.InjectorImpl.getBindingOrThrow (InjectorImpl.java:222)
    at com.google.inject.internal.InjectorImpl.getProviderOrThrow (InjectorImpl.java:1040)
    at com.google.inject.internal.InjectorImpl.getProvider (InjectorImpl.java:1071)
    at com.google.inject.internal.InjectorImpl.getProvider (InjectorImpl.java:1034)
    at com.google.inject.internal.InjectorImpl.getInstance (InjectorImpl.java:1086)
    at org.eclipse.sisu.space.AbstractDeferredClass.get (AbstractDeferredClass.java:48)
    at com.google.inject.internal.ProviderInternalFactory.provision (ProviderInternalFactory.java:85)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision (InternalFactoryToInitializableAdapter.java:57)
    at com.google.inject.internal.ProviderInternalFactory$1.call (ProviderInternalFactory.java:66)
    at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision (ProvisionListenerStackCallback.java:112)
    at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision (ProvisionListenerStackCallback.java:127)
    at com.google.inject.internal.ProvisionListenerStackCallback.provision (ProvisionListenerStackCallback.java:66)
    at com.google.inject.internal.ProviderInternalFactory.circularGet (ProviderInternalFactory.java:61)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.get (InternalFactoryToInitializableAdapter.java:47)
    at com.google.inject.internal.InjectorImpl$1.get (InjectorImpl.java:1050)
    at org.eclipse.sisu.inject.Guice4$1.get (Guice4.java:162)
    at org.eclipse.sisu.inject.LazyBeanEntry.getValue (LazyBeanEntry.java:81)
    at org.eclipse.sisu.plexus.LazyPlexusBean.getValue (LazyPlexusBean.java:51)
    at org.codehaus.plexus.DefaultPlexusContainer.lookup (DefaultPlexusContainer.java:263)
    at org.codehaus.plexus.DefaultPlexusContainer.lookup (DefaultPlexusContainer.java:255)
    at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo (DefaultMavenPluginManager.java:520)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:124)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:90)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke (Method.java:508)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)

(Полный лог доступен здесь)

Используя переключатель -X на maven, строка журнала, непосредственно предшествующая ошибке:

[DEBUG] Configuring mojo org.jacoco:jacoco-maven-plugin:0.8.6:prepare-agent from plugin realm ClassRealm[plugin>org.jacoco:jacoco

Я искал StackOverflow для подобных проблем. Самый близкий, который я нашел, был этот вопрос с похожими симптомами, но связанный с проблемой версии Jenkins.

Я пробовал различные другие попытки решения:

  • Удалил .m2/repository и позволил восстановить
  • Добавлен clean в команды maven
  • Попытка пропустить JaCoCo с помощью jacoco.skip=true

Я почти уверен, что проблема связана с «инъекцией», связанной с JaCoCo, но не могу понять, как обойти, пропустить или исследовать проблемы с этим.

Я в растерянности для следующего шага по устранению неполадок. Чем отличается интерактивная среда ssh от командной строки ssh, которая может привести к другому поведению, чем jacoco-maven-plugin?

Не удалось выполнить цель org.apache.maven.plugins
Не удалось выполнить цель org.apache.maven.plugins
Опишу, что когда я только начинал изучать Maven, у меня не получалось компилировать и упаковывать.
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
0
0
265
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Оказывается, в моем интерактивном .profile была одна настройка, которая была ключом к решению этой проблемы:

ulimit -n 8192

Кажется, вместо того, чтобы пытаться скопировать путь и другие вещи, просто использование source .profile сэкономило бы мне много времени на устранение неполадок.

Другие вопросы по теме