{"id":225181,"date":"2014-06-04T11:20:03","date_gmt":"2014-06-04T07:20:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=225181"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=225181","title":{"rendered":"<span class=\"post_title\">\u041c\u043d\u043e\u0433\u043e\u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0439 Java-\u043f\u0440\u043e\u0435\u043a\u0442 \u0441 Gradle. \u0428\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c<\/span>"},"content":{"rendered":"<div class=\"content html_format\"> \t\t\t\u041e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u043e <a href=\"http:\/\/www.gradle.org\">Gradle<\/a> \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e. \u0418 \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u043f\u0438\u043b\u043a\u0443 \u0442\u0430\u043a\u0443\u044e \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439, \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0442\u0435\u043c, \u043a\u0442\u043e \u043f\u043b\u043e\u0445\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441 Gradle, \u201c\u0440\u0430\u0441\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c\u201d \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442.<\/p>\n<p>  \u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0442\u0435\u043c\u044b, \u043a\u0430\u043a \u043f\u043b\u0430\u0433\u0438\u043d\u044b gradle (plugin), \u0437\u0430\u0434\u0430\u0447\u0438 (task), \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 (dependencies), \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043a\u0430\u0436\u0434\u0430\u044f \u0442\u0435\u043c\u0430 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0430 \u044d\u0442\u0438 \u0442\u0435\u043c\u044b \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0430 \u0445\u0430\u0431\u0440\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: <a href=\"http:\/\/habrahabr.ru\/post\/107558\/\">Gradle: Tasks Are Code<\/a>, <a href=\"http:\/\/habrahabr.ru\/post\/107085\/\">Gradle: Better Way To Build<\/a>. \u0410 \u0435\u0449\u0435 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 Gradle \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 <a href=\"http:\/\/www.gradle.org\/docs\/current\/userguide\/userguide.html\">Gradle User Guide<\/a>. \u042f \u0436\u0435 c\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u0443\u044e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0438 \u0432\u0441\u0435 \u0441\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0442\u0435\u043c\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<br \/>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0446\u0435\u043b\u044c\u044e, \u0447\u0442\u043e \u0436\u0435 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435? \u0410 \u0446\u0435\u043b\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0441\u0442\u0430\u0442\u044c\u0438. \u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Gradle. \u0418 \u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c.<br \/>  <a name=\"habracut\"><\/a><\/p>\n<h5>\u0428\u0430\u0433 1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 gradle <\/h5>\n<p>  <b>\u041f\u0440\u0438\u043c\u0435\u0447\u0435\u043d\u0438\u0435: <\/b><i>\u0415\u0441\u043b\u0438 \u0432\u044b\u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u201c\u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u201d \u0441 gradle, \u0441\u043a\u0430\u0447\u0430\u0432 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u044c\u0438, \u0438\u043b\u0438 \u0432\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0447\u0443\u0436\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0441 \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c gradlew (gradlew.bat) \u0432 \u043a\u043e\u0440\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0442\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c gradle \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e.<\/i><\/p>\n<p>  Gradle \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u0441\u043a\u0430\u0447\u0430\u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u043e <a href=\"http:\/\/\/www.gradle.org\/downloads\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a<\/a> Gradle \u0438\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0432\u0430\u0448\u0435\u0439 \u043b\u044e\u0431\u0438\u043c\u043e\u0439 \u041e\u0421 (\u043f\u0440\u0438\u043c. \u042f \u0441\u0442\u0430\u0432\u0438\u043b \u043d\u0430 Mac OS \u0447\u0435\u0440\u0435\u0437 brew \u0438 \u043d\u0430 Debian \u0447\u0435\u0440\u0435\u0437 apt-get \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432)<\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0448\u0430\u0433\u0430:  <\/p>\n<pre><code>$ gradle -version  ------------------------------------------------------------ Gradle 1.11 ------------------------------------------------------------  Build time:   2014-02-11 11:34:39 UTC Build number: none Revision:     a831fa866d46cbee94e61a09af15f9dd95987421  Groovy:       1.8.6 Ant:          Apache Ant(TM) version 1.9.2 compiled on July 8 2013 Ivy:          2.2.0 JVM:          1.8.0_05 (Oracle Corporation 25.5-b02) OS:           Mac OS X 10.9.3 x86_64 <\/code><\/pre>\n<h5>\u0428\u0430\u0433 2. \u041f\u0443\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043f\u043b\u0430\u0433\u0438\u043d\u044b (plugin), \u043e\u0431\u0435\u0440\u0442\u043a\u0430 (wrapper)<\/h5>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0432 \u0435\u0435 \u043a\u043e\u0440\u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0444\u0430\u0439\u043b <code>build.gradle<\/code> \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<p>  <b>{project_path}\/build.gralde<\/b>  <\/p>\n<pre><code>apply plugin: \u201cjava\u201d apply plugin: \u201capplication\u201d  task wrapper(type: Wrapper) {     gradleVersion = '1.12' } <\/code><\/pre>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u0447\u0442\u043e \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435. \u0422\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a Groovy. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 gradle \u0434\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u0432\u043e\u0431\u043e\u0434\u0443 \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441\u043e \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438. <br \/>  \u0412 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u044b <code>java<\/code> \u0438 <code>application<\/code>. \u041f\u043b\u0430\u0433\u0438\u043d <code>java<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u0430\u043a jar \u2014 \u0441\u043e\u0431\u0440\u0430\u0442\u044c jar \u0430\u0440\u0445\u0438\u0432, compileJava \u2014 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u0438 \u0434\u0440. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"http:\/\/www.gradle.org\/docs\/current\/userguide\/java_plugin.html\">\u0442\u0443\u0442<\/a>. \u041f\u043b\u0430\u0433\u0438\u043d <code>application<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0437\u0430\u0434\u0430\u0447\u0438: run \u2014 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f; installApp \u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440, \u044d\u0442\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f *nix \u0438 \u0434\u043b\u044f windows (bat \u0444\u0430\u0439\u043b); distZip \u2014 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 zip \u0430\u0440\u0445\u0438\u0432, \u043f\u043e\u043c\u0435\u0449\u0430\u044f \u0442\u0443\u0434\u0430 \u0432\u0441\u0435 jar \u0444\u0430\u0439\u043b\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u044b. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0432 <a href=\"http:\/\/www.gradle.org\/docs\/current\/userguide\/application_plugin.html\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0439 \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0435 <code>wrapper<\/code>. \u042d\u0442\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0441\u0430\u043c\u043e\u0435 \u0433\u0435\u043d\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u043d\u043e\u0435 \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u0436\u0438\u0437\u043d\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 <code>$ gradle wrapper<\/code>, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<pre><code>$ gradle wrapper :wrapper  BUILD SUCCESSFUL  Total time: 7.991 secs <\/code><\/pre>\n<p>  <\/p>\n<pre><code>$ ls -a .          ..          .gradle          build.gradle     gradle          gradlew          gradlew.bat <\/code><\/pre>\n<p>  \u041c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b gradlew \u0434\u043b\u044f *nix, gradlew.bat \u0434\u043b\u044f Windows, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0430\u043f\u043a\u0438 gradle \u0438 .gradle. \u0421\u043a\u0440\u044b\u0442\u0443\u044e \u043f\u0430\u043f\u043a\u0443 .gradle \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0442\u0430\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0412\u0441\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043b\u0435\u0436\u0438\u0442 \u0432 gradle \u0438 \u0432 \u0441\u0430\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435 gradlew. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0441\u043c\u0435\u043b\u043e \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u043b\u044e\u0431\u043e\u043c\u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443, \u0438\u043c\u0435\u044e\u0449\u0435\u043c\u0443 jdk \u043d\u0443\u0436\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0438 \u043e\u043d \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0441\u043e\u0431\u0440\u0430\u0442\u044c, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <code>.\/gradlew<\/code>. \u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u043c\u043e\u044f \u0432\u0435\u0440\u0441\u0438\u044f gradle (\u0441\u043c. \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>$ gradle -version<\/code> \u0432\u044b\u0448\u0435) \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0442\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0443\u043a\u0430\u0437\u0430\u043b \u0432 \u0444\u0430\u0439\u043b\u0435 build.gradle, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 wrapper, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e gradle.<\/p>\n<pre><code>$ .\/gradlew -version  ------------------------------------------------------------ Gradle 1.12 ------------------------------------------------------------  Build time:   2014-04-29 09:24:31 UTC Build number: none Revision:     a831fa866d46cbee94e61a09af15f9dd95987421  Groovy:       1.8.6 Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013 Ivy:          2.2.0 JVM:          1.8.0_05 (Oracle Corporation 25.5-b02) OS:           Mac OS X 10.9.3 x86_64 <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043c\u0435\u0441\u0442\u043e <code>gradle<\/code> \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>gradlew<\/code>. \u041a\u0441\u0442\u0430\u0442\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>$ .\/gradlew<\/code> \u0431\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043f\u0430\u043f\u043a\u0443 <code>.gralde<\/code> \u0438 \u0441\u043a\u0430\u0447\u0430\u0435\u0442 \u0442\u0443\u0434\u0430 \u0432\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 (\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u0445 \u043d\u0438\u0436\u0435). \u041d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 gradle (gradlew), \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c\u0441\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u043e\u043b\u0443\u0447\u0438\u0432 \u043f\u0440\u043e\u0435\u043a\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u0435\u0436\u0430\u0442 \u0444\u0430\u0439\u043b\u044b gradlew, \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0435 <code>.\/gradlew tasks<\/code><\/p>\n<p>  \u0418\u0442\u043e\u0433\u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0448\u0430\u0433\u0430 (\u0432\u044b\u0432\u043e\u0434 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d):  <\/p>\n<pre><code>$ .\/gradlew tasks :tasks  ------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------  Application tasks ----------------- distTar - Bundles the project as a JVM application with libs and OS specific scripts. distZip - Bundles the project as a JVM application with libs and OS specific scripts. installApp - Installs the project as a JVM application along with libs and OS specific scripts. run - Runs this project as a JVM application  ...  Other tasks ----------- wrapper  ...  To see all tasks and more detail, run with --all.  BUILD SUCCESSFUL  Total time: 7.808 secs <\/code><\/pre>\n<h5>\u0428\u0430\u0433 3. \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u0440\u043e\u0431\u0435\u043b\u044b<\/h5>\n<p>  \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u0443\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0434\u0430\u0447 <code>gradle<\/code>. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u0430\u0436\u0435 \u0441\u043e\u0431\u0440\u0430\u0442\u044c jar \u0444\u0430\u0439\u043b, \u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043a\u0440\u043e\u043c\u0435 \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u0442\u0430\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434. Gradle \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432, \u0447\u0442\u043e \u0438 <a href=\"http:\/\/maven.apache.org\/\">Maven<\/a>, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e  <\/p>\n<pre><code>src     -main         -java         -resources     -test         -java         -resources <\/code><\/pre>\n<p>  <code>main\/java<\/code> \u2014 \u044d\u0442\u043e java-\u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, <code>main\/resources<\/code> \u2014 \u044d\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b (*.properties, *.xml, *.img \u0438 \u043f\u0440\u043e\u0447\u0438\u0435). \u0412 <code>test<\/code> \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<br \/>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u043e\u0431\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u043f\u043a\u0438 <code>src\/main<\/code> \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0438 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0410 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e Hello World, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"http:\/\/logging.apache.org\/log4j\/1.2\/\">Log4j<\/a>. \u041a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f, \u043a\u0430\u043a \u0432 gradle \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438. \u0412\u043d\u0435\u0441\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b <code>build.gradle<\/code>, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b <code>com\/example\/Main.java<\/code> \u0441 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 <code>src\/main\/java<\/code>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0444\u0430\u0439\u043b \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 Log4j <code>src\/main\/resources\/log4j.xml<\/code>. \u0418 \u0444\u0430\u0439\u043b <code>gradle.properties<\/code> (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043d\u0438\u0436\u0435)<\/p>\n<p>  <b>{project_path}\/build.gradle<\/b>  <\/p>\n<pre><code>apply plugin: &quot;java&quot; apply plugin: &quot;application&quot;  mainClassName = &quot;com.example.Main&quot;  sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7  repositories { \tmavenCentral() }  dependencies { \tcompile &quot;log4j:log4j:1.2.17&quot; }  jar { \tmanifest.attributes(&quot;Main-Class&quot;: mainClassName); }  task wrapper(type: Wrapper) { \tgradleVersion = &quot;1.12&quot; } <\/code><\/pre>\n<p>  <b>{project_path}\/gradle.properties<\/b>  <\/p>\n<pre><code>org.gradle.java.home=\/Library\/Java\/JavaVirtualMachines\/jdk1.7.0_55.jdk\/Contents\/Home\/ <\/code><\/pre>\n<p>  <b>{project_path}\/src\/main\/java\/com\/example\/Main.java<\/b>  <\/p>\n<pre><code class=\"java\">package com.example;  import org.apache.log4j.Logger;  public class Main { \tprivate static final Logger LOG = Logger.getLogger(Main.class);  \tpublic static void main(String[] args) { \t\tLOG.info(&quot;Application started&quot;); \t\tSystem.out.println(&quot;I'm the main project&quot;); \t\tLOG.info(&quot;Application finished&quot;); \t} } <\/code><\/pre>\n<p>  <b>{project_path}\/src\/main\/resources\/log4j.xml<\/b>  <\/p>\n<pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;  &lt;!DOCTYPE log4j:configuration SYSTEM &quot;log4j.dtd&quot;&gt;    &lt;log4j:configuration xmlns:log4j=&quot;http:\/\/jakarta.apache.org\/log4j\/&quot;&gt;  &lt;appender name=&quot;console&quot; class=&quot;org.apache.log4j.ConsoleAppender&quot;&gt;  \t&lt;param name=&quot;Target&quot; value=&quot;System.out&quot;\/&gt;  \t&lt;layout class=&quot;org.apache.log4j.PatternLayout&quot;&gt;  \t\t&lt;param name=&quot;ConversionPattern&quot; value=&quot;%p %c: %m%n&quot;\/&gt;  \t&lt;\/layout&gt;  &lt;\/appender&gt;       &lt;root&gt;  \t&lt;priority value =&quot;debug&quot; \/&gt;  \t&lt;appender-ref ref=&quot;console&quot; \/&gt;  &lt;\/root&gt;  &lt;\/log4j:configuration&gt; <\/code><\/pre>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 <code>build.gradle<\/code>. \u041c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>mainClassName<\/code>. \u041e\u043d\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c <code>application<\/code> \u0432 \u0437\u0430\u0434\u0430\u0447\u0435 <code>run<\/code>. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d. \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 <code>sourceCompatibility<\/code> \u0438 <code>targetCompatibility<\/code>, \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0432 \u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>JavaVersion.VERSION_1_7<\/code>. \u042d\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u0437 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 <code>java<\/code>, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442, \u043a\u0430\u043a\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f jdk \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0431\u043b\u043e\u043a \u2014 <code>repositories<\/code>. \u0412 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 <a href=\"http:\/\/maven.apache.org\/\">Maven<\/a>. Gradle \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0441 \u043d\u0438\u043c \u201c\u0434\u0440\u0443\u0436\u0438\u0442\u201d. \u0411\u043b\u043e\u043a <code>dependencies<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0422\u043e\u043d\u043a\u043e\u0441\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 <a href=\"http:\/\/www.gradle.org\/docs\/current\/userguide\/dependency_management.html\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447\u0438 <code>compile<\/code> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 log4j. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441. \u041c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code>complie group: 'log4j', name: 'log4j', version: '1.2.17' <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0432 maven:  <\/p>\n<pre><code>&lt;dependency&gt;     &lt;groupId&gt;log4j&lt;\/groupId&gt;     &lt;artifactId&gt;log4j&lt;\/artifactId&gt;     &lt;version&gt;1.2.17&lt;\/version&gt; &lt;\/dependency&gt; <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0444\u0430\u0439\u043b\u043e\u0432 <code>compile files('libs\/a.jar', 'libs\/b.jar')<\/code> \u0438 \u043e\u0442 \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 <code>compile project(':library_project')<\/code>.<br \/>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 <code>build.gradle<\/code> \u2014 \u044d\u0442\u043e \u0431\u043b\u043e\u043a <code>jar<\/code>. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043f\u043b\u0430\u0433\u0438\u043d\u0443 <code>java<\/code>. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 jar-\u0444\u0430\u0439\u043b\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>mainClassName<\/code>.<br \/>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <code>gradle.properties<\/code>. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u0430\u043d\u043e \u043f\u043e \u0432\u0441\u0435\u0439 \u0434\u043e\u043a\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f <a href=\"http:\/\/www.gradle.org\/docs\/current\/userguide\/tutorial_this_and_that.html#sec:gradle_properties_and_system_properties\">\u0437\u0434\u0435\u0441\u044c<\/a> \u0438 <a href=\"http:\/\/www.gradle.org\/docs\/current\/userguide\/build_environment.html#sec:gradle_configuration_properties\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>JAVA_HOME<\/code>. \u042d\u0442\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 jdk, \u043a\u0430\u043a \u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438, <code>$ gradle -version<\/code> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u043e\u044f \u0432\u0435\u0440\u0441\u0438\u044f <code>JVM: 1.8.0_05 (Oracle Corporation 25.5-b02)<\/code>.<br \/>  \u042f \u0434\u0443\u043c\u0430\u044e, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0444\u0430\u0439\u043b\u0430\u0445 <code>src\/main\/java\/Main.java<\/code> \u0438 <code>src\/main\/resources\/log4j.xml<\/code> \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u0432\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 Logger, \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u00abI&#8217;m the main project\u00bb \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c. \u0412 \u0444\u0430\u0439\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a log4j \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u043d\u0430\u0448 logger \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c.<\/p>\n<p>  \u0418\u0442\u043e\u0433\u0438 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0448\u0430\u0433\u0430:  <\/p>\n<pre><code>$ .\/gradlew run :compileJava Download http:\/\/repo1.maven.org\/maven2\/log4j\/log4j\/1.2.17\/log4j-1.2.17.jar :processResources :classes :run INFO com.example.Main: Application started I'm the main project INFO com.example.Main: Application finished  BUILD SUCCESSFUL  Total time: 14.627 secs <\/code><\/pre>\n<p>  \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u0438 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<h5>\u0428\u0430\u0433 4. \u0414\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0435 \u0446\u0435\u043b\u0438<\/h5>\n<p>  \u0423 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 gradle. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0430\u043c\u0443\u044e \u043c\u0430\u043b\u043e\u0441\u0442\u044c: \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0441\u0442\u0430\u0442\u044c\u0438, \u0438\u043b\u0438 <a href=\"http:\/\/www.gradle.org\/docs\/current\/userguide\/tutorial_java_projects.html#sec:examples\">multi-project<\/a>, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439 gradle. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0432\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0432 \u043a\u043e\u0440\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430: <code>main_project<\/code> \u0438 <code>library_project<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u043c \u043f\u0430\u043f\u043a\u0443 <code>src<\/code> \u0438 \u0444\u0430\u0439\u043b <code>build.gradle<\/code> \u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>main_project<\/code>, \u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u043a\u043e\u0440\u043d\u0435 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b <code>settings.gradle<\/code> \u0441 \u0442\u0430\u043a\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c (\u043e\u0431 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 <a href=\"http:\/\/www.gradle.org\/docs\/current\/userguide\/build_lifecycle.html#sec:settings_file\">\u0442\u0443\u0442<\/a>):<\/p>\n<p>  <b>{project_path}\/settings.gradle<\/b>  <\/p>\n<pre><code>rootProject.name = 'Gradle_Multiproject'  include 'main_project' <\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c, \u043a\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u043a\u0430\u043a\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c (\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0435 gradle \u043f\u0440\u043e\u0435\u043a\u0442\u044b). \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043e\u0434\u043d\u0430 \u043f\u0430\u043f\u043a\u0430 <code>main_project<\/code>. \u041f\u043e\u0441\u043b\u0435 \u0442\u0430\u043a\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c <code>$ .\/gradlew run<\/code> \u0438\u043b\u0438 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u0430 <code>$ .\/gradlew main_project:run<\/code>, \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0447\u0442\u043e \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0448\u0430\u0433\u0430 3. \u0422\u043e \u0435\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u043e\u0447\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b jar, build, installApp \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. Gradle, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044d\u0442\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0435\u0441\u0442\u044c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d application \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u0443, \u0443 \u043d\u0430\u0441 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 main_project, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <code>$ .\/gradlew run<\/code> \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 run \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u0430)<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043e\u0434 \u0432 \u043d\u0430\u0448\u0435\u043c <code>library_project<\/code>. \u0421\u043e\u0437\u0434\u0430\u0435\u043c <code>build.gradle<\/code> \u0438 <code>src\/main\/java\/com\/example\/library\/Simple.java<\/code><\/p>\n<p>  <b>{project_path}\/library_project\/build.gradle<\/b>  <\/p>\n<pre><code>apply plugin: &quot;java&quot;  sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 <\/code><\/pre>\n<p>  <b>{project_path}\/library_project\/src\/main\/java\/com\/example\/library\/Simple.java<\/b>  <\/p>\n<pre><code>package com.example.library;  public class Simple { \tprivate int value;  \tpublic int getValue() { \t\treturn value; \t}  \tpublic void setValue(int value) { \t\tthis.value = value; \t} }  <\/code><\/pre>\n<p>  <code>build.gradle<\/code> \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d java \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 JDK. \u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b gradle \u0443\u0437\u043d\u0430\u043b \u043e \u043f\u043e\u0434\u043f\u0440\u043ee\u043a\u0442\u0435 <code>library_project<\/code>, \u043e\u043f\u0438\u0448\u0435\u043c \u044d\u0442\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 <code>settings.gradle<\/code>:<\/p>\n<p>  <b>{project_path}\/settings.gradle<\/b>  <\/p>\n<pre><code>rootProject.name = 'Gradle_Multiproject'  include 'main_project', 'library_project' <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0431\u0440\u0430\u0442\u044c jar \u0444\u0430\u0439\u043b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043d\u0430\u0448\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>$ .\/gradlew library_project:jar<\/code>.   <\/p>\n<pre><code>$ .\/gradlew library_project:jar :library_project:compileJava :library_project:processResources UP-TO-DATE :library_project:classes :library_project:jar  BUILD SUCCESSFUL  Total time: 10.061 secs <\/code><\/pre>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: <code>{project_path}\/library_project\/build\/libs\/library_project.jar<\/code>.<br \/>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 <code>Simple<\/code> \u0432 <code>main_project<\/code>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0432 \u0444\u0430\u0439\u043b <code>{project_path}\/main_project\/build.gradle<\/code> \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u0447\u043a\u0443 <code>compile project(&quot;:library_project&quot;)<\/code> \u0432 \u0431\u043b\u043e\u043a <code>dependencies<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 compile \u0432 \u044d\u0442\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u043d\u0443\u0436\u0435\u043d \u043f\u0440\u043e\u0435\u043a\u0442 <code>library_project<\/code>.<\/p>\n<p>  <b>{project_path}\/main_project\/build.gradle<\/b> (\u0431\u043b\u043e\u043a <code>dependencies<\/code>)  <\/p>\n<pre><code>dependencies { \tcompile &quot;log4j:log4j:1.2.17&quot; \tcompile project(&quot;:library_project&quot;) } <\/code><\/pre>\n<p>  <b>{project_path}\/main_project\/src\/main\/java\/com\/example\/Main.java<\/b>  <\/p>\n<pre><code class=\"java\">package com.example;  import org.apache.log4j.Logger; import com.example.library.Simple;  public class Main { \tprivate static final Logger LOG = Logger.getLogger(Main.class);  \tpublic static void main(String[] args) { \t\tLOG.info(&quot;Application started&quot;); \t\tSystem.out.println(&quot;I'm the main project&quot;); \t\tSimple simple = new Simple(); \t\tsimple.setValue(10); \t\tSystem.out.println(&quot;Value from Simple: &quot; + simple.getValue()); \t\tLOG.info(&quot;Application finished&quot;); \t} } <\/code><\/pre>\n<p>  \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c.<\/p>\n<p>  \u0418\u0442\u043e\u0433 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0433\u043e \u0448\u0430\u0433\u0430:  <\/p>\n<pre><code>$ .\/gradlew run :library_project:compileJava UP-TO-DATE :library_project:processResources UP-TO-DATE :library_project:classes UP-TO-DATE :library_project:jar UP-TO-DATE :main_project:compileJava :main_project:processResources UP-TO-DATE :main_project:classes :main_project:run INFO com.example.Main: Application started I'm the main project Value from Simple: 10 INFO com.example.Main: Application finished  BUILD SUCCESSFUL  Total time: 11.022 secs <\/code><\/pre>\n<h5>\u0428\u0430\u0433 5 (\u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439). \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u0443\u0441\u043e\u0440<\/h5>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u0430, \u043d\u043e \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u043e\u0433\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432\u043f\u043e\u043b\u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043e \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 build \u0444\u0430\u0439\u043b\u0430\u0445, \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 gradle, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435. \u0414\u043b\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f, \u044f \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u0441\u0441\u044b\u043b\u043e\u043a \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438. \u0410 \u043f\u043e\u043a\u0430, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u0432 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043d\u0430\u0448\u0438 build \u0444\u0430\u0439\u043b\u044b, \u0441\u043e\u0437\u0434\u0430\u0432 <code>build.gradle<\/code> \u0432 \u043a\u043e\u0440\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 build \u0444\u0430\u0439\u043b\u043e\u0432<\/p>\n<p>  <b>{project_path}\/build.gradle<\/b>  <\/p>\n<pre><code>apply plugin: &quot;idea&quot; apply plugin: &quot;eclipse&quot;  subprojects {     apply plugin: &quot;java&quot;      tasks.withType(JavaCompile) {         sourceCompatibility = JavaVersion.VERSION_1_7         targetCompatibility = JavaVersion.VERSION_1_7     }      repositories {         mavenCentral()     } }  task wrapper(type: Wrapper) {     gradleVersion = &quot;1.12&quot; } <\/code><\/pre>\n<p>  <b>{project_path}\/main_project\/build.gradle<\/b>  <\/p>\n<pre><code>apply plugin: &quot;application&quot;  version = '1.0'  mainClassName = &quot;com.example.Main&quot;  dependencies { \tcompile &quot;log4j:log4j:1.2.17&quot; \tcompile project(&quot;:library_project&quot;) }  jar { \tmanifest.attributes(&quot;Main-Class&quot;: mainClassName); } <\/code><\/pre>\n<p>  <b>{project_path}\/build.gradle<\/b>  <\/p>\n<pre><code>version = &quot;1.1_beta&quot; <\/code><\/pre>\n<p>  \u0412 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c <code>build.gradle<\/code> \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043c\u043e\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043d\u043e \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0444\u0430\u0439\u043b\u044b) \u0438 \u0442\u043e, \u0447\u0442\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432 \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, wrapper \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d, \u0432 \u043a\u043e\u0440\u043d\u0435. <br \/>  \u0412 \u0431\u043b\u043e\u043a <code>subprojects<\/code> \u043c\u044b \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e: \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d java \u2014 \u043e\u043d \u043d\u0443\u0436\u0435\u043d \u0432\u0441\u0435\u043c; \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e jdk; \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c maven-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. \u0422\u0430\u043a\u0436\u0435 \u0432 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u044b <a href=\"http:\/\/www.gradle.org\/docs\/current\/userguide\/idea_plugin.html\">idea<\/a> \u0438 <a href=\"http:\/\/www.gradle.org\/docs\/current\/userguide\/eclipse_plugin.html\">eclipse<\/a>. \u042d\u0442\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 IDE. \u0418 \u0441\u044e\u0434\u0430 \u0436\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u0437\u0430\u0434\u0430\u0447\u0443 wrapper. \u041e\u043d\u0430 \u043d\u0443\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u043e\u0440\u043d\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u044b gradlew.<br \/>  \u0412 \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u043c\u044b \u0443\u0431\u0440\u0430\u043b\u0438 \u0432\u0441\u0435 \u043b\u0438\u0448\u043d\u0435\u0435 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>version<\/code>. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043a jar \u0444\u0430\u0439\u043b\u0430\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043c\u0435\u0441\u0442\u043e library_project.jar \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0435\u0442 library_project-1.1.beta.jar.<br \/>  \u041f\u043e\u043c\u0438\u043c\u043e \u0431\u043b\u043e\u043a\u0430 <code>subprojects<\/code>, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>allprojects<\/code> \u0438\u043b\u0438 <code>project(':project_name')<\/code>. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 <a href=\"http:\/\/www.gradle.org\/docs\/current\/userguide\/multi_project_builds.html\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0443. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0432\u044b\u0437\u0432\u0430\u043b\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0443 \u043b\u044e\u0434\u0435\u0439, \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 \u0441 Gradle, \u0438 \u043f\u043e\u0431\u0443\u0434\u0438\u043b\u0430 \u043a \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u043c\u0443 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044e \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<p>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435. <\/p>\n<h5>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/h5>\n<p>  <a href=\"https:\/\/bitbucket.org\/evsan\/gradle_multiproject\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435, \u043d\u0430 bitbucket<\/a> (<a href=\"https:\/\/bitbucket.org\/evsan\/gradle_multiproject\/get\/default.zip\">zip \u0430\u0440\u0445\u0438\u0432<\/a>)<br \/>  <a href=\"http:\/\/www.gradle.org\/\">Gradle<\/a><br \/>  <a href=\"http:\/\/www.gradle.org\/docs\/current\/userguide\/userguide.html\">Gradle User Guide<\/a><br \/>  <a href=\"http:\/\/logging.apache.org\/\">Apache Logging Services<\/a><br \/>  <a href=\"http:\/\/maven.apache.org\/\">Apache Maven<\/a><br \/>  <a href=\"http:\/\/groovy.codehaus.org\/\">Groovy Language<\/a> \t\t\t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/225181\/\"> http:\/\/habrahabr.ru\/post\/225181\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\"> \t\t\t\u041e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u043e <a href=\"http:\/\/www.gradle.org\">Gradle<\/a> \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e. \u0418 \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u043f\u0438\u043b\u043a\u0443 \u0442\u0430\u043a\u0443\u044e \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439, \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0442\u0435\u043c, \u043a\u0442\u043e \u043f\u043b\u043e\u0445\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441 Gradle, \u201c\u0440\u0430\u0441\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c\u201d \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442.<\/p>\n<p>  \u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0442\u0435\u043c\u044b, \u043a\u0430\u043a \u043f\u043b\u0430\u0433\u0438\u043d\u044b gradle (plugin), \u0437\u0430\u0434\u0430\u0447\u0438 (task), \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 (dependencies), \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043a\u0430\u0436\u0434\u0430\u044f \u0442\u0435\u043c\u0430 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0430 \u044d\u0442\u0438 \u0442\u0435\u043c\u044b \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0430 \u0445\u0430\u0431\u0440\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: <a href=\"http:\/\/habrahabr.ru\/post\/107558\/\">Gradle: Tasks Are Code<\/a>, <a href=\"http:\/\/habrahabr.ru\/post\/107085\/\">Gradle: Better Way To Build<\/a>. \u0410 \u0435\u0449\u0435 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 Gradle \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 <a href=\"http:\/\/www.gradle.org\/docs\/current\/userguide\/userguide.html\">Gradle User Guide<\/a>. \u042f \u0436\u0435 c\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u0443\u044e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0438 \u0432\u0441\u0435 \u0441\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0442\u0435\u043c\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<br \/>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0446\u0435\u043b\u044c\u044e, \u0447\u0442\u043e \u0436\u0435 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435? \u0410 \u0446\u0435\u043b\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0441\u0442\u0430\u0442\u044c\u0438. \u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Gradle. \u0418 \u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-225181","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/225181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=225181"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/225181\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=225181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=225181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=225181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}