Стартирайте основния метод на Java, използвайки Gradle

1. Въведение

В този урок ще изследваме различните методи за изпълнение на основния метод на Java с помощта на Gradle.

2. Основен метод на Java

Има няколко начина, по които можем да стартираме основния метод на Java с Gradle. Нека ги разгледаме отблизо, използвайки проста програма, която отпечатва съобщение на стандартния изход:

public class MainClass { public static void main(String[] args) { System.out.println("Goodbye cruel world ..."); } }

3. Изпълнение с приставката за приложения

Приставката за приложения е основна приставка Gradle, която определя колекция от готови за използване задачи, които ни помагат да пакетираме и разпространим нашето приложение.

Нека започнем с вмъкване на следното в нашия файл build.gradle :

plugins { id "application" } apply plugin : "java" ext { javaMain } application { mainClassName = javaMainClass }

Приставката автоматично генерира задача, наречена run, която изисква само да я насочим към основния клас. Затварянето на ред 9 прави точно това, което ни позволява да задействаме задачата:

~/work/baeldung/tutorials/gradle-java-exec> ./gradlew run > Task :run Goodbye cruel world ... BUILD SUCCESSFUL in 531ms 2 actionable tasks: 1 executed, 1 up-to-date

4. Изпълнение със задачата JavaExec

След това нека приложим персонализирана задача за стартиране на основния метод с помощта на типа задача JavaExec :

task runWithJavaExec(type: JavaExec) { group = "Execution" description = "Run the main class with JavaExecTask" classpath = sourceSets.main.runtimeClasspath main = javaMainClass }

Трябва да дефинираме основния клас на ред 5 и освен това да посочим пътя на класа. Пътят на класа се изчислява от свойствата по подразбиране на изхода за компилация и съдържа правилния път, където всъщност е поставен компилираният клас.

Забележете, че във всеки сценарий използваме пълното име, включително пакета, на основния клас .

Нека да стартираме нашия пример, използвайки JavaExec :

~/work/baeldung/tutorials/gradle-java-exec> ./gradlew runWithJavaExec > Task :runWithJavaExec Goodbye cruel world ... BUILD SUCCESSFUL in 526ms 2 actionable tasks: 1 executed, 1 up-to-date

5. Изпълнение с Exec Task

И накрая, можем да изпълним нашия основен клас, използвайки базовия тип задача Exec . Тъй като тази опция ни предлага възможността да конфигурираме изпълнението по множество начини, нека приложим три персонализирани задачи и да ги обсъдим индивидуално.

5.1. Изпълнява се от компилирания изход на компилация

Първо, ние създаваме персонализирана задача Exec, която се държи подобно на JavaExec :

task runWithExec(type: Exec) { dependsOn build group = "Execution" description = "Run the main class with ExecTask" commandLine "java", "-classpath", sourceSets.main.runtimeClasspath.getAsPath(), javaMainClass }

Можем да стартираме всеки изпълним файл (в този случай java) и да предадем необходимите аргументи за неговото стартиране.

Конфигурираме пътя на класа и насочваме към нашия основен клас на ред 5, а също така добавяме зависимост към задачата за изграждане на ред 2. Това е необходимо, тъй като можем да стартираме нашия основен клас само след като е компилиран:

~/work/baeldung/tutorials/gradle-java-exec> ./gradlew runWithExec > Task :runWithExec Goodbye cruel world ... BUILD SUCCESSFUL in 666ms 6 actionable tasks: 6 executed 

5.2. Стартиране от изходен буркан

Вторият подход разчита на опаковката на бурканчетата на нашето малко приложение:

task runWithExecJarOnClassPath(type: Exec) { dependsOn jar group = "Execution" description = "Run the mainClass from the output jar in classpath with ExecTask" commandLine "java", "-classpath", jar.archiveFile.get(), javaMainClass } 

Забележете зависимостта от задачата на jar на ред 2 и втория аргумент към изпълнимия файл на java на ред 5. Използваме нормален jar, така че трябва да посочим входната точка с четвъртия параметър:

~/work/baeldung/tutorials/gradle-java-exec> ./gradlew runWithExecJarOnClassPath > Task :runWithExecJarOnClassPath Goodbye cruel world ... BUILD SUCCESSFUL in 555ms 3 actionable tasks: 3 executed

5.3. Стартиране от изпълним изходен буркан

Третият начин също разчита на опаковката на бурканчето, но ние определяме точката на влизане с помощта на свойство на манифеста :

jar { manifest { attributes( "Main-Class": javaMainClass ) } } task runWithExecJarExecutable(type: Exec) { dependsOn jar group = "Execution" description = "Run the output executable jar with ExecTask" commandLine "java", "-jar", jar.archiveFile.get() } 

Тук вече не е необходимо да указваме пътя на класа и можем просто да стартираме бурканчето:

~/work/baeldung/tutorials/gradle-java-exec> ./gradlew runWithExecJarExecutable > Task :runWithExecJarExecutable Goodbye cruel world ... BUILD SUCCESSFUL in 572ms 3 actionable tasks: 3 executed

6. Заключение

В тази статия разгледахме различните начини за стартиране на основен метод на Java с помощта на Gradle.

Извън кутията, плъгинът за приложения предоставя минимално конфигурируема задача за стартиране на нашия метод. В JavaExec тип задача ни позволява да стартирате основната метод, без да уточнява всички плъгини.

И накрая, родовият тип задача Exec може да се използва в различни комбинации с изпълнимия файл на Java за постигане на същите резултати, но изисква зависимост от други задачи.

Както обикновено, изходният код за този урок е достъпен в GitHub.