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 .