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