У меня есть проект со следующей структурой:
![enter image description here](https://i.stack.imgur.com/ZrCJe.png)
maven-as-submodule - это простой проект; graph-gen - это модуль maven внутри проекта gradle (не подмодуль)
Итак, моя цель - запустить команду: mvn graphwalker:generate-sources
Из задачи gradle. Итак, я написал несколько строк:
task generateGraphBasedInterfaces(type: Exec) {
workingDir './graph-gen'
commandLine 'mvn graphwalker:generate-sources'
}
Все выглядит нормально, и я могу без проблем запустить команду mvn graphwalker:generate-sources
из каталога / graph-gen.
Но когда я пытаюсь запустить его через задачу gradle - это заканчивается ошибкой. Итак, вот некоторая трассировка стека:
- Исключение составляет: org.gradle.api.tasks.TaskExecutionException: Сбой выполнения для задачи ': generateGraphBasedInterfaces'. в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda $ executeIfValid $ 1 (ExecuteActionsTaskExecuter. java: 187) в org.gradle.internal.Try $ Failure.ifSuccessfulOrElse at 26: 10) org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid (ExecuteActionsTaskExecuter. java: 185) в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.exk. 10ask. org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute (CleanupStaleOutputsExecuter. java: 109) в org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execuk * Выполнить org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute (ResolveTaskExecutionModeExecuter. java: 62) в org.gradle.api.internal.tasks.execution.SkipTaskWithNoAkExecution org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecut er.execute (SkipOnlyIfTaskExecuter. java: 56) в org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute (CatchExceptionTaskExecuter. java: 36) в org.gradle.api.internal.as. EventFiringTaskExecuter $ 1.executeTask (EventFiringTaskExecuter. java: 77) в org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter $ 1.call (EventFiringTaskExecuter. java: 55) в org.internal.i. execute.EventFiringTaskExecuter $ 1.call (EventFiringTaskExecuter. java: 52) в org.gradle.internal.operations.DefaultBuildOperationExecutor $ CallableBuildOperationWorker.execute (defaultBuildOperationExecutor. java: 416 .execute (DefaultBuildOperationExecutor. java: 406) в org.gradle.internal.operations.DefaultBuildOperationExecutor $ 1.execute (DefaultBuildOperationExecutor. java: 165) в org.gradle.internal.operations.DefaultBuildOperationExecutor.ecutor 1055 *: 250) в org.gradle.internal.operations.DefaultBuildOperationExecutor.execute (DefaultBuildOperationExecutor. java: 158) в org.gradle.internal.operations.DefaultBuildOperationExecutor.call (DefaultBuildOperationExecutor. java 102). gradle.internal.operations.DelegatingBuildOperationExecutor.call (DelegatingBuildOperationExecutor. java: 36) в org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute (EventFiringTaskExecuter. java .grag. plan.LocalTaskNodeExecutor.execute (LocalTaskNodeExecutor. java: 41) в org.gradle.execution.taskgraph.DefaultTaskExecutionGraph $ InvokeNodeExecutorsAction.execute (DefaultTaskExecutionGraph. * 10grag. execute (DefaultTaskExecutionGraph. java: 361) в org.gradle.execution.taskgraph.DefaultTaskExecutionGraph $ BuildOperationAwareExecutionAction.execute (DefaultTaskExecutionGraph. java: 354) в org.gradle.execution.tasgraph.D TaskExecutionGraph $ BuildOperationAwareExecutionAction.execute (DefaultTaskExecutionGraph. java: 340) в орг. gradle.execution.plan.DefaultPlanExecutor $ ExecutorWorker.lambda $ run $ 0 (DefaultPlanExecutor. java: 127) в org.gradle.execution.plan.DefaultPlanExecutor $ ExecutorWorker.execute (DefaultPlanExecutor. java: 191) в или .execution.plan.DefaultPlanExecutor $ ExecutorWorker.executeNextNode (DefaultPlanExecutor. java: 182) в org.gradle.execution.plan.DefaultPlanExecutor $ ExecutorWorker.run (DefaultPlanExecutor. java: 124) в org.grag. .ExecutorPolicy $ CatchAndRecordFailures.onExecute (ExecutorPolicy. java: 64) по адресу org.gradle.internal.concurrent.ManagedExecutorImpl $ 1.run (ManagedExecutorImpl. java: 48) по адресу org.gradle.internalluntable.conf. run (ThreadFactoryImpl. java: 56) Причина: org.gradle.process.internal.ExecException: возникла проблема при запуске процесса 'команда' mvn graphwalker: generate-sources '' в org.gradle.process.internal.DefaultExecHandle. execExceptionFor (DefaultExecHandle. java: 241) в org.gradle.process.internal.DefaultExecHan dle.setEndStateInfo (DefaultExecHandle. java: 218) в org.gradle.process.internal.DefaultExecHandle.failed (DefaultExecHandle. java: 372) в org.gradle.process.internal.ExecHandleRunner.run (ExecHandle 1075) *: 87) at org.gradle.internal.operations.CurrentBuildOperationPreservingRunnable.run (CurrentBuildOperationPreservingRunnable. java: 42) ... еще 3 причины: net .rubygrapefruit.platform.NativeException: не удалось запустить 'mvn graph generate-sources 'на net .rubygrapefruit.platform.internal.DefaultProcessLauncher.start (DefaultProcessLauncher. java: 27) на net .rubygrapefruit.platform.internal.WrapperProcessLauncher.start (WrapperProcessLauncher.) 1081 в org.gradle.process.internal.ExecHandleRunner.startProcess (ExecHandleRunner. java: 98) в org.gradle.process.internal.ExecHandleRunner.run (ExecHandleRunner. java: 71) ... еще 4 причины: java .io.IOException: Невозможно запустить программу "mvn graphwalker: generate-sources" (в каталоге "/ Users / Sanchellios / WORK_DIR / эксперименты / maven-as-submodule / graph-gen "): ошибка = 2, нет такого файла или каталога в net .rubygrapefruit.platform.internal.DefaultProcessLauncher.start (DefaultProcessLauncher. java: 25) ... еще 7 Вызвано: java .io.IOException: ошибка = 2, нет такого файла или каталога ... еще 8
Я даже пытался создать оболочку maven внутри * 1029 Модуль * graph-gen - это не помогло.
Изменение задачи на
задача runMvnInterfaceGenerator (тип: Exe c) {depenOn 'copyGraphsToGenerator' workingDir './graph-gen' args 'graphwalker: generate-sources' исполняемый файл 'mvn' }
работал хорошо. Итак, в чем проблема с commandLine
?