Несколько лет назад в спектре программного обеспечения много раз требовались сторонние инструменты для достижения какой-либо конкретной цели по расширению возможностей, и иногда было полной головной болью собрать все это воедино эффективным способом.
Идея программного обеспечения с открытым исходным кодом заключается в сотрудничестве и прозрачности. Вызов зависимости также называется «библиотекой», поэтому в основном проекты с открытым исходным кодом также используют другой проект, который также имеет другие зависимости, или как это называется транзитивными зависимостями.
Разработчики узнали, что наличие стандартизированного инструмента сборки - важная часть рабочего процесса разработки, особенно в командах.
Gradle
Gradle - это инструмент сборки для Java с автоматизацией и пакетированием кода для пользователей. Короче говоря, обрабатывает все прямые и транзитивные зависимости, присутствующие в вашем проекте.
Gradle обрабатывает процесс сборки как задачи, которые внутри запускают модульные тесты и создают файлы jar с определенными метаданными. Эта функция также присутствует в других инструментах, таких как Maven или Apache Ant.
Он предоставляет DSL или предметно-ориентированный язык на основе Groovy (очень похожий на Java, но более гибкий) для работы с ним. Он имеет свои собственные соглашения, но его нетрудно понять, если вы пришли из языков на основе C или даже той же Java.
Демонстрационный проект
На заметку: я буду использовать IntelliJ IDEA в качестве IDE
Цель этого проекта - интегрировать библиотеку CSV в наше консольное Java-приложение.
- Когда IDE уже открыта, перейдите к
New Project
, выберитеGradle
иJava
- Добавьте свой
GroupID
(базовый пакет), который в моем случае будет:com.davidlares.reviews
- Добавьте свой
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 автоматически обработает операторы импорта.
Это довольно просто, правда?