Разбиране на управлението на зависимостите в Gradle
Хранилищата се използват в Gradle за управление на зависимости. Има два компонента на зависимостите Gradle: зависимости и публикации на проекта.
Когато изграждате проект на Gradle, вероятно ще ви трябват библиотеки от други разработчици. Да предположим, че имате нужда от библиотеката Apache Commons Lang за специални манипулации на низове. Така че ви е необходим в своя път на класа, за да може вашият код да работи. И Apache Commons Lang може да се нуждае от допълнителни библиотеки, за които не сте запознати. Gradle ви позволява да кажете конкретната зависимост, от която се нуждае вашият проект, и тя ще отиде в определеното хранилище като Maven или Ivy и ще разбере всички свързани зависимости и ще изтегли файловете и ще го настрои автоматично за вас.
Gradle също има възможност да публикува вашите артефакти. Можете да решите какво означава публикацията за вашия конкретен случай. Можете да го публикувате локално или да го публикувате в хранилище на Maven или Ivy.
Пример за хранилище на Gradle
Да предположим, че искаме да използваме класа StringUtils от библиотеката Apache Commons Lang. Нека настроим режисьор като този:
Здравей свят| - изграждане.gradle
'- src
| - главен
'- Java
'-- Здравей свят
'-- Здравей свят.java
В helloworld.java, можете да поставите следния код:
внос орг.апаш.общи неща.lang3.StringUtils;публичен клас helloworld
публична статична void main (String [] args)
String поздрави = "Hello World!";
Система.навън.println (поздрави);
Система.навън.println (StringUtils.swapCase (поздрави));
И в изграждането.gradle файл можете да поставите следното:
приложи плъгин: 'java'версия = '1.0 '
хранилища
mavenCentral ()
зависимости
компилира група: 'org.апаш.commons ', име:' commons-lang3 ', версия:' 3.7 '
буркан
от конфигурации.компилиране.съберете zipTree it
Нека да обсъдим какво се случва в горния скрипт за изграждане. Казва на Gradle да потърси в хранилището на Maven версията 3 на commons-lang3.7. Също така се казва на Gradle да опакова зависимостите в jar файла. Ако премахнете от конфигурациите.компилиране.съберете реда zipTree it, тогава ще трябва да включите външните зависимости в пътя на класа, когато стартирате програмата.
Сега от основната папка можете да стартирате компилацията с командата
$ gradle бурканТрябва да видите резултати като този:
$ gradle буркан
Изтеглете https: // repo.maven.апаш.org / maven2 / org / apache / commons / commons-lang3 / 3.7 /
commons-lang3-3.7.пом
Изтеглете https: // repo.maven.апаш.org / maven2 / org / apache / commons / commons-parent / 42 /
commons-parent-42.пом
Изтеглете https: // repo.maven.апаш.org / maven2 / org / apache / commons / commons-lang3 / 3.7 /
commons-lang3-3.7.буркан
СТРОИТЕ УСПЕШНО за 6 секунди
2 изпълними задачи: 1 изпълнена, 1 актуална
Можете да стартирате компилацията по следния начин:
$ java -cp build / libs / helloworld-1.0.буркан helloworldЗдравей свят!
Здравей свят!
Ако не бяхте включили зависимостите във вашата компилация, тогава класовете StringUtils нямаше да бъдат включени във вашия helloworld-1.0.файл с буркан. И щяхте да получите грешка като тази:
$ java -cp build / libs / helloworld-1.0.буркан helloworldЗдравей свят!
Изключение в нишка "main" java.lang.NoClassDefFoundError: org / apache / commons / lang3 /
StringUtils в helloworld.главен (helloworld.java: 11)
Причинено от: java.lang.ClassNotFoundException: org.апаш.общи неща.lang3.StringUtils
в Java.нето.URLClassLoader.findClass (URLClassLoader.java: 381)
в Java.lang.ClassLoader.loadClass (ClassLoader.java: 424)
на слънце.разни.Стартер $ AppClassLoader.loadClass (Launcher.Java: 331)
в Java.lang.ClassLoader.loadClass (ClassLoader.Java: 357)
... още 1
Gradle ви улеснява да пакетирате зависимостите си във вашия пакет.
Заключение
Използването на хранилища Gradle и функционалности на зависимости може да опрости процеса ви на управление на зависимости. Не е нужно ръчно да следите всичко.
Допълнително проучване:
Управление на зависимостта Gradle за Java проекти