В заметки дано краткое описание как начать собирать java проекты при помощи Gradle.
Gradle можно получить, скачав zip-файл с gradle.org/downloads. Необходимы только бинарные файлы, так что ищите ссылку на архив с именем gradle-version-bin.zip. (Вы также можете выбрать gradle-version-all.zip, тем самым получите исходники, документацию и бинарные файлы.)
Распакуйте архив и добавьте путь к каталогу bin в переменную окружения path. Для этого заходим в Компьютер (правой кнопкой) - Свойства - Дополнительные параметры системы - Переменные среды – в верхнем окошке нажимаем Создать, вводим имя G_HOME и значение папку установки gradle "d:\gradle-2.13". Далее там же создаем еще одну переменную G со значением %G_HOME%\bin. Так же убеждаемся, что есть переменная JAVA_HOME с путем к JDK. Ее значение должно быть примерно таким «c:\Java\jdk1.8.0_91\». И наконец в том же окошке создаем/модифицируем переменную Path, в нее необходимо просто написать %G%, чтобы наша папочка с исполняемым файлом gradle была видна из командной строки. Теперь необходимо проверить работоспособность нашей установки. Для этого заходим в командную строку и вводим команду
Если всё было сделано правильно, то вы увидите сообщение:
Теперь у вас есть установленный Gradle. Можно приступить к его настройке.
В window нужно перейти в паку c:\Users\<USER_NAME>\.gradle\gradle.properties и в нем прописать
Конфигурация только для HTTP
Конфигурация только для HTTPS
Конфигурация только для HTTP и HTTPS
Для этого выполним команду
Создадим скрипт hello world. Для этого создадим каталог проекта testgradle. В нем создадим файл build.gradle и внесем в него
Создадим очень простой build.gradle в корневой папке проекта(там, где src), который содержит только одну строчку:
Эта единственная строчка в конфигурации сборки приносит значительную пользу. Запустите gradle tasks снова и вы увидите новые задачи в списке, включая задачи для сборки проекта, создания JavaDoc и запуска тестов.
Задача gradle build будет выполняться достаточно часто. Эта задача компилирует, тестирует и упаковывает код в JAR-файл. Вы можете запустить её таким образом:
"BUILD SUCCESSFUL" в конце означает, что сборка прошла успешно.
Чтобы увидеть результаты сборки, посмотрите на содержимое каталога build. Здесь вы найдете несколько директорий, среди которых три наиболее значимые:
classes - Скомпилированные .class файлы
reports - Отчеты в течении сборки(такие как отчеты о тестировании)
libs - Библиотеки для сборки проекта(обычно в виде JAR и/или WAR файлов)
Классы в каталоге с .class файлами генерируются во время сборки Java-кода. Соответственно, вы должны найти там HelloWorld.class и Greeter.class.
На данный момент проект не имеет зависимостей от библиотек, поэтому ничего нет в папке dependency_cache.
Каталог отчетов должен содержать отчет о выполнении тестов для проекта. Т.к. проект пока не содержит тестов, данный отчет будет нам неинтересен.
Каталог библиотек должен содержать JAR-файл с названием каталога проекта. В дальнейшем, вы увидите, как указывать имя JAR-файла и его версию.
Простой пример полностью автономный и не зависит от каких-либо дополнительных библиотек. Однако, большинство приложений зависит от внешних библиотек, с реализацией распостраненного и/или сложного функционала.
Добавим в наш пример библиотеку Joda Time для отображения времени.
Во первых, изменим HelloWorld.java, как показано ниже:
https://habrahabr.ru/post/192268/ - Gradle и решение задач автоматизации
Установка Gradle
Для установки Gradle, вам нужно установит сам Gradle.Gradle можно получить, скачав zip-файл с gradle.org/downloads. Необходимы только бинарные файлы, так что ищите ссылку на архив с именем gradle-version-bin.zip. (Вы также можете выбрать gradle-version-all.zip, тем самым получите исходники, документацию и бинарные файлы.)
Распакуйте архив и добавьте путь к каталогу bin в переменную окружения path. Для этого заходим в Компьютер (правой кнопкой) - Свойства - Дополнительные параметры системы - Переменные среды – в верхнем окошке нажимаем Создать, вводим имя G_HOME и значение папку установки gradle "d:\gradle-2.13". Далее там же создаем еще одну переменную G со значением %G_HOME%\bin. Так же убеждаемся, что есть переменная JAVA_HOME с путем к JDK. Ее значение должно быть примерно таким «c:\Java\jdk1.8.0_91\». И наконец в том же окошке создаем/модифицируем переменную Path, в нее необходимо просто написать %G%, чтобы наша папочка с исполняемым файлом gradle была видна из командной строки. Теперь необходимо проверить работоспособность нашей установки. Для этого заходим в командную строку и вводим команду
gradle
Если всё было сделано правильно, то вы увидите сообщение:
:helpWelcome to Gradle 2.13.To run a build, run gradle <task> ...To see a list of available tasks, run gradle tasksTo see a list of command-line options, run gradle --helpTo see more detail about a task, run gradle help --task <task>BUILD SUCCESSFULTotal time: 10.124 secs
Теперь у вас есть установленный Gradle. Можно приступить к его настройке.
Настройка proxy Gradle
Если вы у себя настроили прокси сервер и используете его для доступа к интернету, то необходимо настроить прокси в gradle, для этого необходимо провести следующие действия.В window нужно перейти в паку c:\Users\<USER_NAME>\.gradle\gradle.properties и в нем прописать
systemProp.http.proxyHost=www.proxyhost.org
systemProp.http.proxyPort=8080 systemProp.http.proxyUser=userid systemProp.http.proxyPassword=password systemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhostsystemProp.https.proxyHost=www.proxyhost.org systemProp.https.proxyPort=8080 systemProp.https.proxyUser=userid systemProp.https.proxyPassword=password systemProp.https.nonProxyHosts=*.nonproxyrepos.com|localhostsocksProxyHost=www.proxyhost.org socksProxyPort=8080
Также используя gradlew можно прописать настройки через команды.
Конфигурация только для HTTP
gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128
Конфигурация только для HTTPS
gradlew -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129
Конфигурация только для HTTP и HTTPS
gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129
Использование Gradle
Прежде чем приступать к разработке проекта и созданию скриптов сборки. Посмотрим стандартные задачи gradle.Для этого выполним команду
gradle tasks
В результате получим
:tasks------------------------------------------------------------All tasks runnable from root project------------------------------------------------------------Build Setup tasks-----------------init - Initializes a new Gradle build. [incubating]wrapper - Generates Gradle wrapper files. [incubating]Help tasks----------buildEnvironment - Displays all buildscript dependencies declared in root project 'gradletest'.components - Displays the components produced by root project 'gradletest'. [incubating]dependencies - Displays all dependencies declared in root project 'gradletest'.dependencyInsight - Displays the insight into a specific dependency in root project 'gradletest'.help - Displays a help message.model - Displays the configuration model of root project 'gradletest'. [incubating]projects - Displays the sub-projects of root project 'gradletest'.properties - Displays the properties of root project 'gradletest'.tasks - Displays the tasks runnable from root project 'gradletest'.To see all tasks and more detail, run gradle tasks --allTo see more detail about a task, run gradle help --task <task>BUILD SUCCESSFULTotal time: 6.936 secs
Создадим скрипт hello world. Для этого создадим каталог проекта testgradle. В нем создадим файл build.gradle и внесем в него
task hello {
doLast { println "hello world" } }
И запустим его командой
В итоге получим
Рассмотрим более сложный пример. Создадим в каталоге testgradle следующую структуру:
Внутри src/main/java/hello создадим Java-классы. Для простоты создадим два класса: HelloWorld.java и Greeter.java.
src/main/java/hello/HelloWorld.java
gradle hello
В итоге получим
:hello
hello world
BUILD SUCCESSFUL
Total time: 2.705 secs
Рассмотрим более сложный пример. Создадим в каталоге testgradle следующую структуру:
└── src
└── main
└── java
└── hello
Внутри src/main/java/hello создадим Java-классы. Для простоты создадим два класса: HelloWorld.java и Greeter.java.
src/main/java/hello/HelloWorld.java
package hello;
public class HelloWorld {
public static void main(String[] args) {
Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
}
}src/main/java/hello/Greeter.java
package hello;
public class Greeter { public String sayHello() { return "Hello world!"; } }
Создадим очень простой build.gradle в корневой папке проекта(там, где src), который содержит только одну строчку:
apply plugin: 'java'
Эта единственная строчка в конфигурации сборки приносит значительную пользу. Запустите gradle tasks снова и вы увидите новые задачи в списке, включая задачи для сборки проекта, создания JavaDoc и запуска тестов.
Задача gradle build будет выполняться достаточно часто. Эта задача компилирует, тестирует и упаковывает код в JAR-файл. Вы можете запустить её таким образом:
gradle build
В результате получим
:compileJava
:processResources UP-TO-DATE:classes:jar:assemble:compileTestJava UP-TO-DATE:processTestResources UP-TO-DATE:testClasses UP-TO-DATE:test UP-TO-DATE:check UP-TO-DATE:build
BUILD SUCCESSFUL
Total time: 8.191 secs
Чтобы увидеть результаты сборки, посмотрите на содержимое каталога build. Здесь вы найдете несколько директорий, среди которых три наиболее значимые:
classes - Скомпилированные .class файлы
reports - Отчеты в течении сборки(такие как отчеты о тестировании)
libs - Библиотеки для сборки проекта(обычно в виде JAR и/или WAR файлов)
Классы в каталоге с .class файлами генерируются во время сборки Java-кода. Соответственно, вы должны найти там HelloWorld.class и Greeter.class.
На данный момент проект не имеет зависимостей от библиотек, поэтому ничего нет в папке dependency_cache.
Каталог отчетов должен содержать отчет о выполнении тестов для проекта. Т.к. проект пока не содержит тестов, данный отчет будет нам неинтересен.
Каталог библиотек должен содержать JAR-файл с названием каталога проекта. В дальнейшем, вы увидите, как указывать имя JAR-файла и его версию.
Простой пример полностью автономный и не зависит от каких-либо дополнительных библиотек. Однако, большинство приложений зависит от внешних библиотек, с реализацией распостраненного и/или сложного функционала.
Добавим в наш пример библиотеку Joda Time для отображения времени.
Во первых, изменим HelloWorld.java, как показано ниже:
package hello;
import org.joda.time.LocalTime; public class HelloWorld { public static void main(String[] args) { LocalTime currentTime = new LocalTime(); System.out.println("The current local time is: " + currentTime); Greeter greeter = new Greeter(); System.out.println(greeter.sayHello()); } }
Здесь HelloWorld использует Joda Time LocalTime класс для получения и печати текущего времени.
Если бы вы запустили gradle build для сборки проекта сейчас, то получили бы ошибку сборки, потому что вы не объявили Joda Time компилируемую зависимость в сборке.
Во-вторых, необходимо добавить источники сторонних библиотек build.gradle:
Если бы вы запустили gradle build для сборки проекта сейчас, то получили бы ошибку сборки, потому что вы не объявили Joda Time компилируемую зависимость в сборке.
Во-вторых, необходимо добавить источники сторонних библиотек build.gradle:
repositories {
mavenLocal() mavenCentral() }
Блок repositories означает, что сборка должна разрешать зависимости из Maven Central репозитория. Gradle опирается в основном на многие соглашения и возможности, определенные в инструменте сборки Maven, включая использование Maven Central как источник библиотек зависимостей.
Теперь объявим библиотеку joda-time:
Теперь объявим библиотеку joda-time:
dependencies {
compile "joda-time:joda-time:2.2" }
В блоке dependencies описана единственная зависимость Joda Time. В частности, запрашивается(читаем справа налево) версию 2.2 библиотеки joda-time в joda-time группе.
Ключевого слова compile, обозначающее доступность библиотеки во время компиляции(а если бы собирался WAR файл, то была бы включена /WEB-INF/libs папка в WAR). Также существуют другие заметные ключевые слова, среди которых:
providedCompile - Требуемые зависимости для компиляции кода, но которые будут доступны во время работы кода контейнера(например, Java Servlet API)
testCompile - Зависимости, используемые для компиляции и запуска тестов, но не требуемые для компиляции и запуска кода проекта
И наконец, назначим имя для нашего JAR артефакта.
Ключевого слова compile, обозначающее доступность библиотеки во время компиляции(а если бы собирался WAR файл, то была бы включена /WEB-INF/libs папка в WAR). Также существуют другие заметные ключевые слова, среди которых:
providedCompile - Требуемые зависимости для компиляции кода, но которые будут доступны во время работы кода контейнера(например, Java Servlet API)
testCompile - Зависимости, используемые для компиляции и запуска тестов, но не требуемые для компиляции и запуска кода проекта
И наконец, назначим имя для нашего JAR артефакта.
jar {
baseName = 'gs-gradle' version = '0.1.0' }
jar блок определяет, как JAR файл будет назван. В данном случае мы получим gs-gradle-0.1.0.jar.
В итоге build.gradle примет вид
Теперь, если мы запустим gradle build, Gradle должен будет загрузить Joda Time зависимость из репозитория Maven Central и успешно собрать проект.
Сборка проекта с Gradle Wrapper
Gradle Wrapper является предпочтительным способом для Gradle сборки. Он содержит bat-скрипты для Windows и shell-скрипты для OS X и Linux. Эти скрипты позволяют запускать сборку с Gradle без необходимости установки самого Gradle в вашу систему. Чтобы это стало возможным, добавьте следующий блок в конец build.gradle:
После того, как задачи отработают, появится несколько новых файлов. Два скрипта в корневом каталоге, а jar-файл и properties-файл оболочки будут в папке gradle/wrapper.
Ранее, когда запускался wrapper с конкретной версией Gradle, он загружал и кешировал бинарники Gradle для соответствующей версии. Gradle Wrapper спроектирован таким образом, чтобы было возможно сохранить его в репозитории VCS и любой, кто его клонирует, сможет собрать проект без необходимости устанавливать и настраивать Gradle определенной версии.
В результате будет так:
Остановимся подробнее на упаковке зависимостей. К примеру, если бы мы собирали WAR-файл, общепризнанный формат, ассоциирующийся с упаковкой сторонних зависимостей, мы бы могли использовать WAR плагин. Если вы используете Spring Boot и хотите получить исполняемый JAR-файл, тогда вам пригодится spring-boot-gradle-plugin. На данном этапе, gradle недостаточно знает о выбранной вами системе. Но этого достаточно, чтобы приступить к работе с gradle.
В конечном счете, у вас должен получиться такой build.gradle файл:
После перезагрузки надо поставить поддержку Gradle:
Перезагружаем Eclipse.
Теперь надо указать используемую версию Gradle, иначе Eclipse будет применять устаревшую 1.7:
Для запуска отдельных задач сборки можно использовать Window - Show view - Other - Gradle Tasks.
После установки нужно указать где стоит gradle для этого Tools - Options - Miscellaneous - Gradle - Gradle Installation directory.
Теперь откроем проект для этого Open project и выбираем наш проект. Он появится в дереве проектов.
Теперь правой кнопкой на проект и выбираем Custom tasks - Custom tasks вводим run проект запускается.
https://docs.gradle.org/current/release-notes - Gradle Release Notes
http://codetutr.com/2013/03/27/configuring-gradle-behind-a-proxy/ - Configuring Gradle behind a Proxy
http://stackoverflow.com/questions/5991194/gradle-proxy-configuration - Gradle proxy configuration
http://stackoverflow.com/questions/26523804/global-gradle-proxy-settings - Global gradle proxy settings?
http://programador.ru/in-the-gradle/ - Про Gradle для любопытных
https://www.youtube.com/watch?v=JgaQ3GRdYg0 - gradle netbeans
В итоге build.gradle примет вид
apply plugin: 'java'
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
compile "joda-time:joda-time:2.2"
}
jar {
baseName = 'gs-gradle'
version = '0.1.0'
}
Теперь, если мы запустим gradle build, Gradle должен будет загрузить Joda Time зависимость из репозитория Maven Central и успешно собрать проект.
Сборка проекта с Gradle Wrapper
Gradle Wrapper является предпочтительным способом для Gradle сборки. Он содержит bat-скрипты для Windows и shell-скрипты для OS X и Linux. Эти скрипты позволяют запускать сборку с Gradle без необходимости установки самого Gradle в вашу систему. Чтобы это стало возможным, добавьте следующий блок в конец build.gradle:
task wrapper(type: Wrapper) {
gradleVersion = '1.11' }
Запускаем команду для загрузки и инициализации wrapper-скриптов:
gradle wrapper
После того, как задачи отработают, появится несколько новых файлов. Два скрипта в корневом каталоге, а jar-файл и properties-файл оболочки будут в папке gradle/wrapper.
└── initial
└── gradlew └── gradlew.bat └── gradle └── wrapper └── gradle-wrapper.jar └── gradle-wrapper.properties
Gradle Wrapper теперь доступен для сборки проекта. Добавим его в систему контроля версий и каждый, кто клонирует проект, сможет его собрать точно таким же способом. Gradle Wrapper можно использовать наравне с установленным Gradle. Wrapper-скрипт для выполнения задачи сборки точно так же, как и ранее:
./gradlew build
Ранее, когда запускался wrapper с конкретной версией Gradle, он загружал и кешировал бинарники Gradle для соответствующей версии. Gradle Wrapper спроектирован таким образом, чтобы было возможно сохранить его в репозитории VCS и любой, кто его клонирует, сможет собрать проект без необходимости устанавливать и настраивать Gradle определенной версии.
В результате будет так:
build
├── classes │ └── main │ └── hello │ ├── Greeter.class │ └── HelloWorld.class ├── dependency-cache ├── libs │ └── gs-gradle-0.1.0.jar └── tmp └── jar └── MANIFEST.MF
В сборке содержатся два класса Greeter и HelloWorld, как и ожидалось, а также JAR-файл. Окиньте беглым взглядом:
$ jar tvf build/libs/gs-gradle-0.1.0.jar
0 Fri May 30 16:02:32 CDT 2014 META-INF/ 25 Fri May 30 16:02:32 CDT 2014 META-INF/MANIFEST.MF 0 Fri May 30 16:02:32 CDT 2014 hello/ 369 Fri May 30 16:02:32 CDT 2014 hello/Greeter.class 988 Fri May 30 16:02:32 CDT 2014 hello/HelloWorld.class
Это содержимое пакета файлов классов. Важно отметить, что даже, если вы и объявили joda-time как зависимость, библиотека не включена в пакет. И JAR-файл будет неспособен к выполнению.
Чтобы сделать этот код выполняемым, мы можем использовать плагинapplication. Добавьте его в build.gradleфайл.
Чтобы сделать этот код выполняемым, мы можем использовать плагинapplication. Добавьте его в build.gradleфайл.
apply plugin: 'application'
mainClassName = 'hello.HelloWorld'
Затем просто запустим приложение командой gradlew run
:compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :run The current local time is: 16:12:51.978 Hello world!
BUILD SUCCESSFUL
Total time: 5.035 secs
Остановимся подробнее на упаковке зависимостей. К примеру, если бы мы собирали WAR-файл, общепризнанный формат, ассоциирующийся с упаковкой сторонних зависимостей, мы бы могли использовать WAR плагин. Если вы используете Spring Boot и хотите получить исполняемый JAR-файл, тогда вам пригодится spring-boot-gradle-plugin. На данном этапе, gradle недостаточно знает о выбранной вами системе. Но этого достаточно, чтобы приступить к работе с gradle.
В конечном счете, у вас должен получиться такой build.gradle файл:
apply plugin: 'java'apply plugin: 'eclipse'apply plugin: 'application'
mainClassName = 'hello.HelloWorld'
repositories { mavenLocal() mavenCentral()}
dependencies { compile "joda-time:joda-time:2.2"}
jar { baseName = 'gs-gradle' version = '0.1.0'}
task wrapper(type: Wrapper) { gradleVersion = '1.11'}
Gradle в Eclipse
Поддержкой Gradle в Eclipse занимается SpringSource, предоставляя ее в виде плагина из набора STS (Spring Tool Suite), поэтому надо поставить их. Проще всего это сделать через Eclipse Marketplace, специальную систему распространения плагинов. В запущенном Eclipse:- Help → Eclipse Market place
- Ищем gradle sts
- В предложенном списке находим версию для используемого Eclipse. В нашем случае это "Gradle (STS) Integration for Eclipse 3.7.3.RELEASE".
- Нажимаем кнопку Install
- Проходим стандартную процедуру установки плагинов.
После перезагрузки надо поставить поддержку Gradle:
- Help → Install New Software
- В выпадающем списке Work with: выбираем "http://dist.springsource.com/release/TOOLS/update/e4.3/"
- Отмечаем: Core / Eclipse integration for Gradle и Groovy-Eclipse (все элементы) (поддержка Groovy нужна для редактирования gradle-файлов)
- Нажимаем Next и проходим стандартную процедуру установки плагинов.
Перезагружаем Eclipse.
Теперь надо указать используемую версию Gradle, иначе Eclipse будет применять устаревшую 1.7:
- Windows → Preferences
- На странице настроек Gradle указываем Gradle Distribution, Folder и выбираем папку установки Gradle
- Нажимаем Ok.
- File → Import
- В списке выбираем Gradle/Gradle Project. Нажимаем Next
- Выбираем Root Folder с проектом. В данном случае это samples/eclipse.
- Нажимаем кнопку Build Model. После этого в списке проектов появится проект "eclipse"
- Нажимаем Finish
Для запуска отдельных задач сборки можно использовать Window - Show view - Other - Gradle Tasks.
Gradle в NetBeans
Для работы с gradle проектами в NetBeans необходимо установить плагин. Для этого Tools - Plugins - Available plugins в поиске вводим gradle. Отмечаем Gradle Support и устанавливаем его.После установки нужно указать где стоит gradle для этого Tools - Options - Miscellaneous - Gradle - Gradle Installation directory.
Теперь откроем проект для этого Open project и выбираем наш проект. Он появится в дереве проектов.
Теперь правой кнопкой на проект и выбираем Custom tasks - Custom tasks вводим run проект запускается.
Ссылки по теме
http://spring-projects.ru/guides/gradle/ - Сборка Java-проекта с использованием Gradlehttps://docs.gradle.org/current/release-notes - Gradle Release Notes
http://codetutr.com/2013/03/27/configuring-gradle-behind-a-proxy/ - Configuring Gradle behind a Proxy
http://stackoverflow.com/questions/5991194/gradle-proxy-configuration - Gradle proxy configuration
http://stackoverflow.com/questions/26523804/global-gradle-proxy-settings - Global gradle proxy settings?
http://programador.ru/in-the-gradle/ - Про Gradle для любопытных
https://www.youtube.com/watch?v=JgaQ3GRdYg0 - gradle netbeans
http://plugins.netbeans.org/plugin/44510/gradle-support - Gradle Support - plugin detail
http://dev-blogs.com/gradle-plugin-for-eclipse/ - Установка gradle плагина
http://vygovskiy.com/xwiki/bin/view/Main/Eclipse+%D0%B8+Gradle - Eclipse и Gradle
eclipsehttp://javacore.ru/topic/111-gradle.htm - Импорт Gradle проекта в Eclipse
Как Вы думаете если сейчас начинать проект, это лучше сделать на Maven или Gradle?
ОтветитьУдалитьНа мой взгляд Gradle вне конкуренции, лучше на нем.
ОтветитьУдалитьБлог О Быдло Разработке Программного Обеспечения: Сборка Java Проектов Gradle >>>>> Download Now
ОтветитьУдалить>>>>> Download Full
Блог О Быдло Разработке Программного Обеспечения: Сборка Java Проектов Gradle >>>>> Download LINK
>>>>> Download Now
Блог О Быдло Разработке Программного Обеспечения: Сборка Java Проектов Gradle >>>>> Download Full
>>>>> Download LINK dY