Как передать путь к файлу из Gradle в класс Java? - PullRequest
0 голосов
/ 10 октября 2018

Итак, я хотел бы запустить свое Java-приложение с использованием Gradle, а также передать пути к файлам .csv & .xml в мой основной класс, чтобы использовать их в моем bufferedReader, и я понятия не имею, как это должно быть сделано.Мое приложение не построено на jar, оно должно запускаться с задачей gradle run.Я хочу, чтобы пользователь мог указать свои собственные файлы XML и CSV для использования (в командной строке), а затем запустить приложение Java, не спрашивая о путях к файлам внутри приложения.Например, давайте возьмем следующую строку кода: Reader reader = Files.newBufferedReader (Paths.get («Вот место, где я хочу, чтобы gradle включал путь к csv»));

1 Ответ

0 голосов
/ 10 октября 2018
// sample gradle task to execute a java jar
task runFromGradle() {
    print("java -jar myJar.jar path/to/some.csv".execute().text)
}

// some sample class with a main that accepts args. first arg is the csv path
class Scratch {
    public static void main(String[] args) {
        String csvPath = args[0];
        Reader reader = Files.newBufferedReader(Paths.get(csvPath));
        // do whatever with reader...
    }
}

# from command line
$ gradle runFromGradle

К комментарию @ lance-java, конечно, есть и другие способы выполнить ту же задачу.Он сослался на другую задачу JavaExec, которую вы можете продлить.Вот пример того, если вы хотите использовать этот путь.

// note the `JavaExec` task is only available from the java plugin,
// this may or may not what your app needs
// reference: https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/JavaExec.html
apply plugin: 'java'

task runFromGradle(type: JavaExec) {
  // here gradle has access to the raw sourcesets
  // so we can directly use them for the runtime
  classpath = sourceSets.main.runtimeClasspath

  main = 'com.me.Main'

  // arguments to pass to the application
  args 'path/to/some.csv'
}

# from command line
$ gradle runFromGradle

# java class is the same
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...