Перейти к основному содержимому

Создание Java-приложения с помощью Gradle

· 7 мин. чтения

1. Обзор

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

Мы объясним шаги ручного создания структуры проекта, выполнения начальной настройки и добавления подключаемого модуля Java и зависимости JUnit. Затем мы создадим и запустим приложение.

Наконец, в последнем разделе мы приведем пример того, как это сделать с помощью плагина Gradle Build Init. Некоторое базовое введение можно также найти в статье Introduction to Gradle .

2. Структура Java-проекта

Прежде чем мы вручную создадим проект Java и подготовим его к сборке, нам нужно установить Gradle .

Начнем создавать папку проекта с помощью консоли PowerShell с именем gradle-employee-app :

> mkdir gradle-employee-app

После этого перейдем в папку проекта и создадим подпапки:

> mkdir src/main/java/employee

Полученный результат показан:

Directory: D:\gradle-employee-app\src\main\java

Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 4/10/2020 12:14 PM employee

В приведенной выше структуре проекта давайте создадим два класса. Один из них — это простой класс Employee с такими данными, как имя, адрес электронной почты и год рождения:

public class Employee {
String name;
String emailAddress;
int yearOfBirth;
}

Второй — это основной класс приложения Employee , который печатает данные о сотруднике:

public class EmployeeApp {

public static void main(String[] args){
Employee employee = new Employee();

employee.name = "John";
employee.emailAddress = "john@foreach.com";
employee.yearOfBirth = 1978;

System.out.println("Name: " + employee.name);
System.out.println("Email Address: " + employee.emailAddress);
System.out.println("Year Of Birth:" + employee.yearOfBirth);
}
}

3. Создайте Java-проект

Далее для сборки нашего Java-проекта мы создаем файл конфигурации build.gradle в корневой папке проекта .

В командной строке PowerShell следующее:

Echo > build.gradle

Мы пропускаем следующий шаг, связанный с входными параметрами:

cmdlet Write-Output at command pipeline position 1
Supply values for the following parameters:
InputObject[0]:

Чтобы сборка прошла успешно, нам нужно добавить плагин приложения :

plugins {
id 'application'
}

Затем мы применяем подключаемый модуль приложения и добавляем полное имя основного класса :

apply plugin: 'application'
mainClassName = 'employee.EmployeeApp'

Каждый проект состоит из задач . Задача представляет часть работы, которую выполняет сборка, например, компиляцию исходного кода.

Например, мы можем добавить в конфигурационный файл задачу, которая выводит сообщение о завершении настройки проекта:

println 'This is executed during configuration phase'
task configured {
println 'The project is configured'
}

Обычно сборка gradle является основной и наиболее часто используемой задачей. Эта задача компилирует, тестирует и собирает код в JAR-файл . Сборка запускается вводом:

> gradle build

Выполните команду выше, чтобы вывести:

> Configure project :
This is executed during configuration phase
The project is configured
BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 up-to-date

Чтобы увидеть результаты сборки, давайте посмотрим на папку сборки, которая содержит подпапки: классы, дистрибутивы, библиотеки и отчеты . Набрав Tree / F , вы получите структуру папки сборки:

├───build
│ ├───classes
│ │ └───java
│ │ ├───main
│ │ │ └───employee
│ │ │ Employee.class
│ │ │ EmployeeApp.class
│ │ │
│ │ └───test
│ │ └───employee
│ │ EmployeeAppTest.class
│ │
│ ├───distributions
│ │ gradle-employee-app.tar
│ │ gradle-employee-app.zip

│ ├───libs
│ │ gradle-employee-app.jar
│ │
│ ├───reports
│ │ └───tests
│ │ └───test
│ │ │ index.html
│ │ │
│ │ ├───classes
│ │ │ employee.EmployeeAppTest.html

Как видите, подпапка классов содержит два скомпилированных файла .class , которые мы создали ранее. Подпапка дистрибутивов содержит заархивированную версию пакета jar приложения. И libs хранит jar-файл нашего приложения.

Обычно в отчетах есть файлы, которые генерируются при запуске тестов JUnit .

Теперь все готово для запуска проекта Java, набрав gradle run. Результат выполнения приложения на выходе:

> Configure project :
This is executed during configuration phase
The project is configured

> Task :run
Name: John
Email Address: john@foreach.com
Year Of Birth:1978

BUILD SUCCESSFUL in 1s
2 actionable tasks: 1 executed, 1 up-to-date

3.1. Сборка с использованием Gradle Wrapper

Gradle Wrapper — это скрипт, который вызывает объявленную версию Gradle .

Во-первых, давайте определим задачу-оболочку в файле build.gradle :

task wrapper(type: Wrapper){
gradleVersion = '5.3.1'
}

Давайте запустим эту задачу, используя оболочку gradle из Power Shell:

> Configure project :
This is executed during configuration phase
The project is configured

BUILD SUCCESSFUL in 1s
1 actionable task: 1 executed

В папке проекта будет создано несколько файлов, в том числе файлы в папке /gradle/wrapper :

│   gradlew
│ gradlew.bat

├───gradle
│ └───wrapper
│ gradle-wrapper.jar
│ gradle-wrapper.properties
  • gradlew : сценарий оболочки, используемый для создания задач Gradle в Linux.
  • gradlew.bat : скрипт .bat , с помощью которого пользователи Windows создают задачи Gradle .
  • gradle-wrapper.jar : исполняемый файл jar нашего приложения.
  • gradle-wrapper.properties : файл свойств для настройки оболочки

4. Добавьте зависимости Java и запустите простой тест

Во-первых, в нашем файле конфигурации нам нужно установить удаленный репозиторий, откуда мы загружаем jar-файлы зависимостей. Чаще всего это либо mavenCentral() , либо jcenter() . Выбираем второе:

repositories {
jcenter()
}

Создав наши репозитории, мы можем указать, какие зависимости загружать. В этом примере мы добавляем Apache Commons и библиотеку JUnit. Для реализации добавьте части testImplementation и testRuntime в конфигурацию зависимостей .

Он основан на дополнительном тестовом блоке:

dependencies {
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'
testImplementation('junit:junit:4.13')
testRuntime('junit:junit:4.13')
}
test {
useJUnit()
}

Когда это будет сделано, давайте попробуем работу JUnit на простом тесте. Перейдите в папку src и создайте подпапки для теста:

src> mkdir test/java/employee

В последней подпапке создадим EmployeeAppTest.java :

public class EmployeeAppTest {

@Test
public void testData() {

Employee testEmp = this.getEmployeeTest();
assertEquals(testEmp.name, "John");
assertEquals(testEmp.emailAddress, "john@foreach.com");
assertEquals(testEmp.yearOfBirth, 1978);
}

private Employee getEmployeeTest() {

Employee employee = new Employee();
employee.name = "John";
employee.emailAddress = "john@foreach.com";
employee.yearOfBirth = 1978;

return employee;
}
}

Как и раньше, давайте запустим тест Gradle Clean из командной строки, и тест должен пройти без проблем.

5. Инициализация проекта Java с помощью Gradle

В этом разделе мы объясним шаги по созданию и построению Java-приложения, которые мы прошли до сих пор. Разница в том, что на этот раз мы работаем с помощью плагина Gradle Build Init.

Создайте новую папку проекта и назовите ее gradle-java-example. Затем переключитесь в эту пустую папку проекта и запустите сценарий инициализации:

> gradle init

Gradle задаст нам несколько вопросов и предложит варианты создания проекта. Первый вопрос заключается в том, какой тип проекта мы хотим создать:

Select type of project to generate:
1: basic
2: cpp-application
3: cpp-library
4: groovy-application
5: groovy-library
6: java-application
7: java-library
8: kotlin-application
9: kotlin-library
10: scala-library
Select build script DSL:
1: groovy
2: kotlin
Enter selection [1..10] 6

Выберите вариант 6 для типа проекта, а затем первый вариант (groovy) для сценария сборки .

Далее появляется список вопросов:

Select test framework:
1: junit
2: testng
3: spock
Enter selection (default: junit) [1..3] 1

Project name (default: gradle-java-example):
Source package (default: gradle.java.example): employee

BUILD SUCCESSFUL in 57m 45s
2 actionable tasks: 2 executed

Здесь мы выбираем первый вариант, junit, для тестовой среды. Выберите имя по умолчанию для нашего проекта и введите «employee» в качестве имени исходного пакета.

Чтобы увидеть полную структуру каталогов в папках проекта /src , введите Tree /F в Power Shell:

├───main
│ ├───java
│ │ └───employee
│ │ App.java
│ │
│ └───resources
└───test
├───java
│ └───employee
│ AppTest.java

└───resources

Наконец, если мы создадим проект с запуском gradle, мы получим «Hello World» на выходе:

> Task :run
Hello world.

BUILD SUCCESSFUL in 1s
2 actionable tasks: 1 executed, 1 up-to-date

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

В этой статье мы представили два способа создания и сборки приложения Java с помощью Gradle. Дело в том, что мы проделали ручную работу и потребовалось время, чтобы начать компилировать и собирать приложения из командной строки. В этом случае стоит обратить внимание на импорт некоторых необходимых пакетов и классов, если приложение использует несколько библиотек.

С другой стороны, сценарий инициализации Gradle имеет функции, которые генерируют легкий скелет нашего проекта, а также некоторые файлы конфигурации, связанные с Gradle `` .

Исходный код этой статьи доступен на GitHub .