I'm trying to run a custom task from inside a regular task.

My custom task is:

class SshTask extends DefaultTask {
        String user
        String host
        String command

        @TaskAction
        void run() {
                project.exec {
                        commandLine 'ssh', "$u...@$host", command
                }
        }
}

My regular task is :

task deploy {
        description = 'Deploy the download to remote server. Specify $user, 
$host,
and $deploymentDir.'
        doLast {
                ssh = new SshTask()
                ssh.configure {
                        user = server.user
                        host = server.host
                        command = "mkdir -vp $server.dir"
                }
                ssh.execute()
        }
}


However, this fails with :


* Exception is:
org.gradle.api.tasks.LocationAwareTaskExecutionException: Build file
'/home/ceefour/project/Bippo/magento-downloader/build.gradle'
Execution failed for task ':deploy'.
        at
org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions(DefaultTaskExecuter.java:66)
        at
org.gradle.api.internal.tasks.DefaultTaskExecuter.execute(DefaultTaskExecuter.java:43)
        at
org.gradle.api.internal.project.taskfactory.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:32)
        at
org.gradle.api.internal.project.taskfactory.ExecutionShortCircuitTaskExecuter.execute(ExecutionShortCircuitTaskExecuter.java:50)
        at
org.gradle.api.internal.tasks.SkipTaskExecuter.doExecute(SkipTaskExecuter.java:57)
        at
org.gradle.api.internal.tasks.SkipTaskExecuter.execute(SkipTaskExecuter.java:35)
        at
org.gradle.api.internal.tasks.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:32)
        at org.gradle.api.internal.AbstractTask.execute(AbstractTask.java:231)
        at
org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:167)
        at
org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:160)
        at
org.gradle.execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:78)
        at
org.gradle.execution.TaskNameResolvingBuildExecuter.execute(TaskNameResolvingBuildExecuter.java:113)
        at
org.gradle.execution.DelegatingBuildExecuter.execute(DelegatingBuildExecuter.java:54)
        at
org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:153)
        at
org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:107)
        at
org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:75)
        at org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:41)
        at org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:27)
        at
org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:209)
        at
org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:193)
        at org.gradle.launcher.Main.execute(Main.java:55)
        at org.gradle.launcher.Main.main(Main.java:40)
        at 
org.gradle.launcher.ProcessBootstrap.runNoExit(ProcessBootstrap.java:46)
        at org.gradle.launcher.ProcessBootstrap.run(ProcessBootstrap.java:28)
        at org.gradle.launcher.GradleMain.main(GradleMain.java:24)
Caused by: java.lang.NullPointerException
        at
org.gradle.api.internal.AbstractTask$TaskInfo.access$000(AbstractTask.java:422)
        at org.gradle.api.internal.AbstractTask.<init>(AbstractTask.java:99)
        at org.gradle.api.internal.AbstractTask.<init>(AbstractTask.java:89)
        at org.gradle.api.DefaultTask.<init>(DefaultTask.java:31)
        at
SshTask.<init>(/home/ceefour/project/Bippo/magento-downloader/build.gradle)
        at
build_73qscsirv2k4ajt9o1pf1hrome$_run_closure1_closure2.doCall(/home/ceefour/project/Bippo/magento-downloader/build.gradle:33)
        at
org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:445)
        at
org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:432)
        at
org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions(DefaultTaskExecuter.java:58)
        ... 24 more


It means it fails during :

                ssh = new SshTask()


What is the proper way to execute SshTask ? I don't want to create a named
task for it.

Also SshTask may also be called from inside another custom task, so SshTask
is not a "goal" but it's an "action".

Thank you.

-----
http://www.HendyIrawan.com
-- 
View this message in context: 
http://gradle.1045684.n5.nabble.com/How-to-run-ad-hoc-anonymous-task-without-naming-the-task-tp3332909p3332909.html
Sent from the gradle-user mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to