Quiero correr mi main método a través de gradle tarea

Esta es la forma en que yo se ejecutan a través de la cmd:

java -cp RTMonitor.jar com.bla.MainRunner first_arg

¿cómo debe ser escrito en gradle?

run {
    args += ['java -cp RTMonitor.jar com.bla.MainRunner first_arg']
}

Actualización

He intentado

task myRun(type: JavaExec) {
    classpath configurations.main
    main = "com.bla.runners.StatsLogGenerator"
    args "arg1", "arg2"
}

y me dieron:

Error:(71, 0) Could not find property 'main' on configuration container.

the I have tried:
    task myRun(type: JavaExec) {
        classpath "configurations.main"
        main = "com.bla.runners.StatsLogGenerator"
        args "arg1", "arg2"
    }

y tengo un error:

FAILURE: Build failed with an exception.
17:49:21.855 [ERROR] [org.gradle.BuildExceptionReporter] 
17:49:21.856 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
17:49:21.856 [ERROR] [org.gradle.BuildExceptionReporter] Execution failed for task ':myRun'.
17:49:21.856 [ERROR] [org.gradle.BuildExceptionReporter] > Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
17:49:21.864 [ERROR] [org.gradle.BuildExceptionReporter] 
17:49:21.865 [ERROR] [org.gradle.BuildExceptionReporter] * Exception is:
17:49:21.866 [ERROR] [org.gradle.BuildExceptionReporter] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':myRun'.
17:49:21.867 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
17:49:21.882 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:361)
17:49:21.882 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:31)

pero cuando voy a ejecutar a través de Intellij, cada thig funciona OK

OriginalEl autor Elad Benda | 2015-02-19

2 Comentarios

  1. 34

    La más sencilla es probablemente la aplicación del uso del plugin. Agregar apply plugin: 'application' para su construcción.gradle y establecer mainClassName = com.bla.MainRunner . Para añadir argumentos a la clase principal de modificar la ejecución de la tarea y editar los argumentos de la propiedad

    run {
    args += 'first_arg'
    }

    Classpath es tomado automáticamente a partir de los principales sourceSet, si desea, puede editar la ruta de clases de propiedad de la ejecución de la tarea.

    Si necesita más personalización, usted puede definir su propia tarea de tipo JavaExec como este

    task myRun(type: JavaExec) {
    classpath sourceSets.main.runtimeClasspath
    main = "com.bla.MainRunner"
    args "arg1", "arg2"
    }
    y ¿qué pasa si tengo dos métodos principales, y quiero definir una tarea diferente para cada uno de ellos? mainClassName es asignar en el ámbito global?
    entonces usted va a ser probablemente el mejor de la definición de su propia tarea de tipo JavaExec
    dónde está el doc para ver que las propiedades de cada tipo de tarea tiene?
    En la DSL guía de Referencia. Para JavaExec aquí gradle.org/docs/current/dsl/org.gradle.api.tasks.JavaExec.html
    todavía falla. por favor, puedes ver mis actualizaciones?

    OriginalEl autor Tibor Blenessy

  2. 0
    task run(type: JavaExec) {
    group = 'Run' //<-- change the name as per your need
    description = 'Small description what this run will do'
    classpath sourceSets.main.runtimeClasspath //<-- Don't change this
    main = "com.mypackage.myclassNameContaingMainMethod"
    args "arg1", "arg2"
    }

    Esto es independiente de la tarea registrada, y también puede tener un grupo y la descripción y otras propiedades de la tarea.

    OriginalEl autor Navneet kumar

Dejar respuesta

Please enter your comment!
Please enter your name here