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

Идея программного обеспечения с открытым исходным кодом заключается в сотрудничестве и прозрачности. Вызов зависимости также называется «библиотекой», поэтому в основном проекты с открытым исходным кодом также используют другой проект, который также имеет другие зависимости, или как это называется транзитивными зависимостями.

Разработчики узнали, что наличие стандартизированного инструмента сборки - важная часть рабочего процесса разработки, особенно в командах.

Gradle

Gradle - это инструмент сборки для Java с автоматизацией и пакетированием кода для пользователей. Короче говоря, обрабатывает все прямые и транзитивные зависимости, присутствующие в вашем проекте.

Gradle обрабатывает процесс сборки как задачи, которые внутри запускают модульные тесты и создают файлы jar с определенными метаданными. Эта функция также присутствует в других инструментах, таких как Maven или Apache Ant.

Он предоставляет DSL или предметно-ориентированный язык на основе Groovy (очень похожий на Java, но более гибкий) для работы с ним. Он имеет свои собственные соглашения, но его нетрудно понять, если вы пришли из языков на основе C или даже той же Java.

Демонстрационный проект

На заметку: я буду использовать IntelliJ IDEA в качестве IDE

Цель этого проекта - интегрировать библиотеку CSV в наше консольное Java-приложение.

  1. Когда IDE уже открыта, перейдите к New Project, выберите Gradle и Java
  2. Добавьте свой GroupID (базовый пакет), который в моем случае будет: com.davidlares.reviews
  3. Добавьте свой ArtifactID (название вашей баночки), для меня будет: reviews

В этот момент IDE создаст проект, и все будет настроено за нас.

Структура проекта

Простой файл Gradle будет содержать следующие файлы.

build.gradle - это файл конфигурации, который содержит информацию о проекте, любой требуемый плагин и репозитории для обработки прямых и транзитивных зависимостей. Если значение group определено в мастере, version - это версия файла, apply plugin: 'java' определяет расположение папок и способы их упаковки.

repositories() - это метод, определенный в проекте, который указывает, каким репозиториям Gradle разрешено загружать файлы. Более подробную информацию можно найти здесь, альтернатив для этого много.

Второй файл - это gradlew, который является оболочкой Gradle. Размещается ли самостоятельно установленная установка Gradle на случай, если кто-то захочет заняться вашим проектом?

Третий файл - gradlew.bat, это тот же файл, но для ОС Windows.

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

И, конечно же, в рамках нашего проекта. У нас есть обе папки внутри каталога /src, папка main с классами Java и папка test в качестве нашей тестовой среды.

На этом этапе мы готовы кодировать и работать с внешними зависимостями.

Добавление зависимостей

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

Если мы подробно рассмотрим наш build.gradle, у вас будет repositories() метод с этим базовым синтаксисом

repositories() {
  mavenCentral()
}

Это метод закрытия, который возвращает вызов из репозитория mavenCentral. Итак, все это происходит при сборке проекта.

Поскольку нам нужна библиотека CSV, мы собираемся использовать общую CSV-библиотеку Apache, вот ссылка на библиотеку. В инструкциях указано, что есть способ вытащить его из репозитория Maven.

Вот сценарий XML, представленный в документации библиотеки файлов (версия Maven)

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-csv</artifactId>
  <version>1.8</version>
</dependency>

Итак, нам нужно включить это в закрытие dependencies

Инструкция конфигурации testCompile содержит именованные параметры в любом количестве. Между тем, в разделе compile указываются библиотеки для установки

Вам нужно будет добавить туда следующее: compile group: 'org.apache.commons', name; 'commons-csv', version: '1.8' (на основе информации, описывающей XML. После этого вам нужно будет обновить проект и построить его, но это можно автоматизировать, вы можете включить параметры автоматического импорта в Вкладка проектов Gradle в среде IDE

Существует также короткий способ добавления зависимостей: compile ‘org.apache.commons:commons-csv:1.8’

Вы можете проверить, указана ли зависимость, запустив ./gradlew dependencies внутри CLI IDE. В случае успеха вы увидите дерево зависимостей для каждой зависимости, установленной в закрытии «dependencies», с соответствующей семантической версией.

Еще одна интересная особенность Gradle заключается в том, что вы можете версировать gradle.build file с помощью Github / Gitlab или чего-то еще, и каждый человек может получить копию тех же зависимостей, не обращаясь напрямую к файлам jar.

Наконец, как им пользоваться?

Внутри нашей папки src/main добавьте файл Main.java и работайте напрямую с библиотекой.

Мой пакет называется Reviews, а полный путь - com.davidlares.reviews

Вот мой сценарий для Main.java:

public class Main {
 public static void main(String[] args) {
  try {
   CSVPrinter p = new CSVPrinter(System.out, CSVFormat.EXCEL);
   p.printRecord("David", "Lares", 22, "Backend");
  } catch (IOException e) {
   e.printStackTrace();
  } 
 } 
}

IDE автоматически обработает операторы импорта.

Это довольно просто, правда?