Как встроить код Java в сборку Gradle с помощью задачи JavaExec

У меня есть управляемый Gradle проект, в который я хочу добавить простую задачу Java. Эта задача очень специфична для проекта, и если она может помочь, я не хочу разрабатывать ее как отдельный плагин. Итак, вопрос в том, могу ли я определить такую ​​пользовательскую задачу в том же build.gradle, который я использую для своего проекта? Или это неизбежно, что мне нужно упаковать его как отдельный проект (плагин) и установить в локальный репозиторий?

Также, вероятно, важно отметить, что исходный проект не связан с Java (никакой другой код Java не требуется для сборки)

PS На основе комментариев ниже:

Я хотел бы добавить src/main/java/SomeUsefulStuff.java в существующий проект, и этот файл скомпилирован и используется в качестве пользовательской задачи. Я понимаю, что его нужно компилировать каждый раз, когда я запускаю сборку, но опять же - код будет маленьким. Однако он будет иметь некоторые внешние зависимости, такие как Commons IO

1 ответ

Решение

Благодаря RaGe, который указал на JavaExec, все оказалось довольно просто. Вот что вы делаете:

  1. Поместите свой Java-код в /src/main/java так же, как в обычном Java-проекте, управляемом Gradle. Убедитесь, что в файле, который вы собираетесь вызвать, есть метод main
  2. добавлять apply plugin: 'java' в build.gradle
  3. Если ваш Java-код имеет какие-либо зависимости от сторонних библиотек, добавьте их в раздел зависимостей
  4. Добавьте новый раздел задач в build.gradle следующим образом:
task usefulStuff(type: JavaExec) {
      classpath = sourceSets.main.runtimeClasspath
      main = 'com.me.gradle.UsefulStuff'
      // arguments to pass to the application
      args 'OhmyGod!'
    }
  1. Теперь вы можете ссылаться на эту задачу как на любую задачу в вашей сборке. Например imporantTask.dependsOn usefulStuff
Другие вопросы по тегам