Есть простой плагин Eclipse для запуска Gradle, который просто использует способ командной строки для запуска gradle.
Что такое аналог Gradle для компиляции и запуска maven
mvn compile exec:java -Dexec.mainClass=example.Example
Таким образом gradle.build
можно запустить любой проект с .
ОБНОВЛЕНИЕ: был аналогичный вопрос. Что такое gradle-эквивалент плагина maven exec для запуска приложений Java? спрашивали раньше, но решение предлагало изменить каждый проектbuild.gradle
package runclass;
public class RunClass {
public static void main(String[] args) {
System.out.println("app is running!");
}
}
Затем выполнение gradle run -DmainClass=runclass.RunClass
:run FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':run'.
> No main class specified
Ответы:
Нет прямого эквивалента
mvn exec:java
в gradle, вам нужно либо применитьapplication
плагин, либо иметьJavaExec
задачу.application
плагинАктивируйте плагин:
Настройте его следующим образом:
В командной строке напишите
JavaExec
задачаОпределите задачу, скажем
execute
:Чтобы запустить, напишите
gradle -PmainClass=Boo execute
. Ты получаешьmainClass
- это свойство, динамически передаваемое в командной строке.classpath
настроен на получение последних классов.Если вы не передадите
mainClass
свойство, оба подхода потерпят неудачу, как ожидалось.источник
build.gradle
,classpath
он жестко запрограммирован для получения классов java из пути к исходным классамbuild.gradle
java . Даже когда вы запускаете путьmvn exec:java
к классам, он настроен на получение исходных файлов java в текущем каталоге maven. ВJavaExec
задаче я сделал то же самое. Изменитеclasspath
для своего источника java, и путь к классу изменится автоматически. Нетmvn exec:java
эквивалента в том, чтоgradle
вам нужно либо применитьapplication
плагин, либо иметьJavaExec
задачу.task execute(...
в build.gradle все остальные задачи завершаются сбоем с тем же сообщением об ошибке, говорящим, что gradle ожидает передачи mainClass. Я не умею убирать или строить.main = mainClass
на,main = getProperty("mainClass")
и он больше не будет на вас кричать.gradle build
, см. мой ответ ниже.Вам просто нужно использовать плагин Gradle Application :
А потом просто
gradle run
.Как указывает Тереза, вы также можете настроить
mainClassName
как системное свойство и запускать с аргументом командной строки.источник
build.graldle
. Но у меня есть проект с множеством утилитарных классов, у каждого из которых есть основной метод.System.getProperty("mainClass")
, 3) исходный код находится там, где он должен быть в соответствии с соглашением, 4) все работает когда вы вставляетеRunClass
файл сборки?build.gradle
естьmainClassName = "runclass.RunClass"
. Параметр-DmainClass
не действует:gradle run -DmainClass=runclass.RunClass2
выполняет жестко запрограммированный основной класс.ext.mainClass = project.hasProperty('mainClass') ? project.getProperty('mainClass') : 'org.gradle.sample.Main' ; apply plugin:'application' ; mainClassName = ext.mainClass
теперь, когда вы это делаете,gradle -PmainClass=Foo run
он должен использоватьсяFoo
в качестве основного класса.Расширяя ответ First Zero, я думаю, вам нужно что-то, где вы также можете работать
gradle build
без ошибок.Оба
gradle build
иgradle -PmainClass=foo runApp
работают с этим:где вы устанавливаете основной класс по умолчанию.
источник
plugins { application }; application { mainClassName = if (project.hasProperty("mainClass")) project.properties.get("mainClass").toString() else "Foo" }
Scanner
для чтения используется anextLine()
. Есть какие-нибудь мысли по исправлению этого? Продолжайте получать сообщение «строка не найдена» при запуске с помощью runApp.Вы можете параметризовать его и передать gradle clean build -Pprokey = goodbye
источник