Изграждане на Java приложение с Gradle

1. Общ преглед

Този урок предоставя практическо ръководство за това как да се изгради Java-базиран проект с помощта на Gradle .

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

И накрая, в последния раздел ще дадем пример за това как да направите това с Gradle Build Init Plugin. Някои основни въведения могат да бъдат намерени и в статията Въведение в Gradle.

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

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

Нека започнем да създаваме папка с проекти с помощта на конзолата PowerShell с име gradle-worker-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

В рамките на структурата на проекта по-горе, нека създадем два класа. Единият е прост клас на служител с данни като име, имейл адрес и година на раждане:

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

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

public class EmployeeApp { public static void main(String[] args){ Employee employee = new Employee(); employee.name = "John"; employee.emailAddress = "[email protected]"; 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 build е основната задача и най-използваната. Тази задача компилира, тества и сглобява кода в 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

За да видим резултатите от компилацията, нека разгледаме папката за компилация, която съдържа подпапки: класове, дистрибуции, библиотеки и отчети . Въвеждането на дървото / 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 файла, които преди това създадохме. Подпапката за дистрибуции съдържа архивирана версия на пакета за приложения. И l ibs запазва jar файла на нашето приложение.

Обикновено в отчетите има файлове, които се генерират при изпълнение на тестове JUnit.

Сега всичко е готово за стартиране на проекта Java, като напишете gradle run. Резултатът от изпълнението на приложението при излизане:

> Configure project : This is executed during configuration phase The project is configured > Task :run Name: John Email Address: [email protected] 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 location:

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

4. Add Java Dependencies and Run a Simple Test

First, in our configuration file, we need to set a remote repository from where we download dependency jars. Most often, these repositories are either mavenCentral() or jcenter(). Let's choose the second one:

repositories { jcenter() }

With our repositories created, we can then specify which dependencies to download. In this example, we are adding Apache Commons and JUnit library. To implement, add testImplementation and testRuntime parts in the dependencies configuration.

It builds on an additional test block:

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

When that's done, let's try the work of JUnit on a simple test. Navigate to the src folder and make the sub-folders for the test:

src> mkdir test/java/employee

Within the last sub-folder, let's create EmployeeAppTest.java:

public class EmployeeAppTest { @Test public void testData() { Employee testEmp = this.getEmployeeTest(); assertEquals(testEmp.name, "John"); assertEquals(testEmp.emailAddress, "[email protected]"); assertEquals(testEmp.yearOfBirth, 1978); } private Employee getEmployeeTest() { Employee employee = new Employee(); employee.name = "John"; employee.emailAddress = "[email protected]"; employee.yearOfBirth = 1978; return employee; } }

Similar to before, let's run a gradle clean test from the command line and the test should pass without issue.

5. Java Project Initialization Using Gradle

In this section, we'll explain the steps for creating and building a Java application that we have gone through so far. The difference is that this time, we work with the help of the Gradle Build Init Plugin.

Create a new project folder and name it gradle-java-example. Then, switch to that empty project folder and run the init script:

> gradle init

Gradle will ask us with few questions and offer options for creating a project. The first question is what type of project we want to generate:

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

Select option 6 for the type of project and then first option (groovy) for the build script.

Next, a list of questions appears:

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

Here, we select the first option, junit, for the test framework. Select the default name for our project and type “employee” as the name of the source package.

To see the complete directory structure within /src project folders, let's type Tree /F in Power Shell:

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

Finally, if we build the project with gradle run, we get “Hello World” on exit:

> Task :run Hello world. BUILD SUCCESSFUL in 1s 2 actionable tasks: 1 executed, 1 up-to-date

6. Conclusion

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

От друга страна, скриптът за инициализация Gradle има функции, които генерират лек скелет на нашия проект, както и някои от конфигурационните файлове, свързани с Gradle .

Изходният код за тази статия е достъпен в GitHub.