Hi
I’m trying to add JVM args to the getWorkerExecutor to be able to debug the execution of CustomizeXslTask
by adding this line
config.forkOptions({ options ->
options.setJvmArgs(["-agentlib:jdwp=transport=dt_socket,server=n,address=127.0.0.1:5005,suspend=y"])
})
but when adding this line it breaks the code.
package com.xxxxx.build.tasks
import com.xxxxx.build.ProductPluginExtension
import org.gradle.api.Action
import org.gradle.api.file.FileCollection
import org.gradle.api.plugins.JavaPluginConvention
import org.gradle.api.tasks.Classpath
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.SourceTask
import org.gradle.api.tasks.TaskAction
import org.gradle.workers.IsolationMode
import org.gradle.workers.WorkerConfiguration
import org.gradle.workers.WorkerExecutor
import org.gradle.process.JavaForkOptions
import javax.inject.Inject
import java.lang.reflect.Method
class XSLCustomize extends SourceTask {
protected final ProductPluginExtension ppExt = project.extensions.getByType(ProductPluginExtension)
private final WorkerExecutor workerExecutor
private final JavaPluginConvention javaPlugin = getProject().getConvention().getPlugin(JavaPluginConvention.class)
@Classpath
FileCollection classpath = project.files()
@OutputDirectory
File destinationDir
@Input
String debug = "false"
@Internal
boolean fork = true
@Inject
WorkerExecutor getWorkerExecutor() {
throw new UnsupportedOperationException()
}
void setClasspath(Collection<FileCollection> configurations) {
classpath = configurations.inject { a, b -> (a + b) }
}
XSLCustomize() {
super()
include('**/*.xsl')
inputs.dir("$ppExt.literatum.litBuildClasses/com/xxxxx/modules/build/xsl")
inputs.file("$ppExt.literatum.litBuildClasses/com/xxxxx/literatum/util/xml/XslConstants.class")
inputs.files(javaPlugin.sourceSets.getByName('main').java.sourceDirectories.asFileTree
.filter { File f -> f.name.equalsIgnoreCase("${project.name}XslConstants.java") })
}
@TaskAction
void process() {
def filteredCp = classpath.filter {
!it.name.matches("(.*groovy-all-[0-9.]*|.*slf4j-simple-[0-9.]*|.*slf4j-log4j12-[0-9.]*)\\.jar")
}
project.delete("$destinationDir/*")
project.copy {
from getSource()
into destinationDir
}
getWorkerExecutor().submit(CXslProcessor, new Action<WorkerConfiguration>() {
@Override
void execute(WorkerConfiguration config) {
config.setIsolationMode(fork ? IsolationMode.PROCESS : IsolationMode.CLASSLOADER)
config.classpath(filteredCp)
config.params(destinationDir, project.name, debug)
config.forkOptions({ options ->
options.setJvmArgs(["-agentlib:jdwp=transport=dt_socket,server=n,address=127.0.0.1:5005,suspend=y"])
})
}
})
}
static class CXslProcessor implements Runnable {
private final File basePath
private final String product
private final String debug
@Inject
CXslProcessor(File basePath, String product, String debug) {
this.basePath = basePath
this.product = product
this.debug = debug
}
@Override
void run() {
Object cXslTask = Class.forName("com.xxxxx.modules.build.ant.CustomizeXslTask").newInstance()
Method setBasePath = cXslTask.getClass().getMethod("setBasePath", String)
setBasePath.invoke(cXslTask, basePath.canonicalPath)
Method setProduct = cXslTask.getClass().getMethod("setProduct", String)
setProduct.invoke(cXslTask, product)
Method setDebug = cXslTask.getClass().getMethod("setDebug", String)
setDebug.invoke(cXslTask, debug)
Method execute = cXslTask.getClass().getMethod("execute")
execute.invoke(cXslTask)
}
}
}
But it keeps failing with this error, any help.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':product:ux3:customizeXsl'.
> A failure occurred while executing com.xxxxx.build.tasks.XSLCustomize$CXslProcessor
> Failed to run Gradle Worker Daemon
> Process 'Gradle Worker Daemon 15' finished with non-zero exit value 2
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':product:ux3:customizeXsl'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:207)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:205)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:186)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:114)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:409)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:399)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:157)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:242)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:150)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:94)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:356)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.xxxxx.build.tasks.XSLCustomize$CXslProcessor
at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:202)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.process.internal.worker.WorkerProcessException: Failed to run Gradle Worker Daemon
at org.gradle.process.internal.worker.WorkerProcessException.runFailed(WorkerProcessException.java:29)
at org.gradle.process.internal.worker.DefaultMultiRequestWorkerProcessBuilder$1.start(DefaultMultiRequestWorkerProcessBuilder.java:156)
at org.gradle.workers.internal.WorkerDaemonStarter.startDaemon(WorkerDaemonStarter.java:72)
at org.gradle.workers.internal.WorkerDaemonClientsManager.reserveNewClient(WorkerDaemonClientsManager.java:106)
at org.gradle.workers.internal.WorkerDaemonFactory$1.reserveClient(WorkerDaemonFactory.java:55)
at org.gradle.workers.internal.WorkerDaemonFactory$1.execute(WorkerDaemonFactory.java:43)
at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:200)
... 6 more
Caused by: org.gradle.process.internal.ExecException: Process 'Gradle Worker Daemon 15' finished with non-zero exit value 2
at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:417)
at org.gradle.process.internal.worker.DefaultWorkerProcess.onProcessStop(DefaultWorkerProcess.java:141)
at org.gradle.process.internal.worker.DefaultWorkerProcess.access$000(DefaultWorkerProcess.java:42)
at org.gradle.process.internal.worker.DefaultWorkerProcess$1.executionFinished(DefaultWorkerProcess.java:94)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:245)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:157)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:141)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
at com.sun.proxy.$Proxy70.executionFinished(Unknown Source)
at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:221)
at org.gradle.process.internal.DefaultExecHandle.finished(DefaultExecHandle.java:357)
at org.gradle.process.internal.ExecHandleRunner.completed(ExecHandleRunner.java:110)
at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:84)
at org.gradle.internal.operations.CurrentBuildOperationPreservingRunnable.run(CurrentBuildOperationPreservingRunnable.java:38)
... 3 more