javaone 2013 moscow gradle
DESCRIPTION
TRANSCRIPT
![Page 1: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/1.jpg)
Gradle
Евгений Борисов
![Page 2: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/2.jpg)
О себе…
• Сингальтон не надо писать! Оставьте это Спрингу.
• Его надо пить!
![Page 3: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/3.jpg)
Хорошо быть програмистом!
![Page 4: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/4.jpg)
![Page 5: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/5.jpg)
Пол дня возился чтобы
скомпилировать
Правильно, а теперь еще пол дня будешь билд делать
![Page 6: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/6.jpg)
Начнешь криво, все будет криво
![Page 7: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/7.jpg)
Что сегодня входит в билд?
• VCS
• CI scripts & different xml configurations
• Dependency management
• Deployment (clustering)
• Unit and sanity Tests
• Documentation
• …
![Page 8: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/8.jpg)
Внучок не придет сегодня, мэйл прислал… У него билд падает
![Page 9: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/9.jpg)
Какие есть инструменты стройки?
![Page 10: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/10.jpg)
Я использую:
1. Ант
2. Грэйдл
3. Мавен
4. Айви
5. Я все делаю руками
![Page 11: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/11.jpg)
Декларативная & Императивная
![Page 12: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/12.jpg)
Декларативная и Императивная
• ANT – императивный
• Maven - декларативный Не совсем…
![Page 13: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/13.jpg)
Maven
<build>
</build>
![Page 14: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/14.jpg)
Мы любим тебя, XML
![Page 15: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/15.jpg)
<build>
</build>
![Page 16: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/16.jpg)
Чей билд лучше?
А мой билд еще и на машинке умеет…
![Page 17: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/17.jpg)
У нас тоже две беды…
• XML-ы и отсутсвие DSL
![Page 18: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/18.jpg)
И кто сегодня Чак Норрис?
![Page 19: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/19.jpg)
![Page 20: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/20.jpg)
Чем gradle хорош?
• Нет привязки к конкретному типу проекта
• Мощный DSL, которые легко расширять
• Groovy
• Эффективность билда
– таски могут бежать параллельно
– Инкрементальная сборка
![Page 21: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/21.jpg)
Нельзя просто так говорить! Давайте немножечко побилдим…
![Page 22: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/22.jpg)
![Page 23: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/23.jpg)
А почему не видно того, что печатает
тест?
test { testLogging.showStandardStreams = true }
![Page 24: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/24.jpg)
Build task dependency graph
![Page 25: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/25.jpg)
Так ведь это как в Мавене!!!
![Page 26: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/26.jpg)
Совсем нет…
• Можно добавить / убрать depency к существуещему таску
• Можно добавить поведение
• Можно изменить настройки таска
![Page 27: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/27.jpg)
Build task dependency graph
![Page 28: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/28.jpg)
Мне нужен WAR! Я понятно объясняю?
![Page 29: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/29.jpg)
Давайте напишем свой Task
1. Class MyTask extends DefaultTask
2. Прописать метод @TaskAction
3. Добавить его в DSL
4. Всё!
![Page 30: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/30.jpg)
Какие еще есть плагины?
• Groovy Plugin
• The Scala Plugin
• The War Plugin
• The Ear Plugin
• The Jetty Plugin
• The Eclipse Plugin
• The IDEA Plugin
• AspectJ plugin
• ClassLoader plugin
• Exec plugin
• JavaFx Plugin
• Tomcat Plugin
• Android Plugin
• The FindBugs Plugin
![Page 31: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/31.jpg)
Как написать свой Plugin
• Зачем писать свои плагины, разве мало того, что можно писать свои таски?
• Чтобы расширять DSL.
– Мы хотим декларативный БИЛД!
![Page 32: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/32.jpg)
Хочу плагин!!! Что делать?
![Page 33: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/33.jpg)
• Как писать плагин: https://bitbucket.org/davidmc24/gradle-bintray-plugin/src/6adc1aca5ed712b8802fe6b3830b2d860d9fda88/Bintray.gradle?at=default
• Добавить: buildscript: apply from: 'gradle/Bintray.gradle'
• Юзить: repositories { bintray.jcenter() }
![Page 34: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/34.jpg)
Не пора ли переходить на Грэйдл?
![Page 35: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/35.jpg)
Вспомните молодость. Когда то мы не боялись новых технологий…
![Page 36: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/36.jpg)
Мне из этого болота не вылезти…
Я погряз в Анте капитально…
![Page 37: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/37.jpg)
Всем кто любит ант…
![Page 38: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/38.jpg)
Как перейти с Анта на Грэйдл
![Page 39: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/39.jpg)
Как перейти с Анта
![Page 40: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/40.jpg)
С мавена так не получится…
![Page 41: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/41.jpg)
Получится получится
![Page 42: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/42.jpg)
maven2gradle plugin
Напишите это в вашем build.gradle : apply plugin:’maven2Gradle’ Положите этот скрипт туда где pom Запустите gradle build
![Page 43: Javaone 2013 moscow gradle](https://reader033.vdocuments.mx/reader033/viewer/2022050920/54886310b47959050d8b5721/html5/thumbnails/43.jpg)
А что почитать?
• http://www.gradle.org/docs/current/userguide/userguide.html
• http://www.gradle.org/docs/current/dsl/
• http://www.gradle.org/docs/current/javadoc/