У меня есть скрипт сборки gradle, который в настоящее время работает, просто выполняя класс Java через его основной метод. Я хочу знать, как я могу вызвать статический метод в том же классе, но не должен проходить через основной метод. Текущий код градации выглядит следующим образом:
import org.apache.tools.ant.taskdefs.condition.Os
apply plugin: 'java'
defaultTasks 'runSimple'
project.ext.set("artifactId", "test-java")
File rootDir = project.getProjectDir()
File targetDir = file("${rootDir}/target")
FileCollection javaClasspath = files("${targetDir}/tools.jar")
task(runSimple, dependsOn: 'classes', type: JavaExec) {
main = 'com.test.model.JavaTest'
classpath = javaClasspath
args 'arg1'
args 'arg2'
}
И мой класс Java выглядит следующим образом:
package com.test.model;
public class JavaTest {
public static void main(String[] args) throws Exception {
System.out.println("In main");
anotherMethod(args[0], args[1]);
}
public static void anotherMethod(String arg1, String arg2) {
System.out.println("In anotherMethod");
System.out.println(arg1 + " " + arg2);
}
}
Это дает мне вывод:
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:runSimple
In main
In anotherMethod
arg1 arg2
BUILD SUCCESSFUL
Total time: 2.344 secs
Мой вопрос просто в том, как я могу пропустить основной метод и вызвать метод «anotherMethod» непосредственно из сценария gradle? Тогда вывод будет просто:
In anotherMethod
arg1 arg2
Спасибо
JavaExec
работает так же, как вызов командыjava
из оболочки. Он всегда будет выполнять методmain
. - person ajoberstar   schedule 12.07.2013JavaExec
Gradle просто поддерживает эквивалент вызова командыjava
из оболочки. То есть он будет запускать основной метод указанного вами класса один раз. Gradle может запускать любой код Groovy, который вы хотите, поэтому я уверен, что это возможно сделать, но я не вижу прямого пути. - person ajoberstar   schedule 16.07.2013