Javaone 2013 moscow gradle
-
Upload
evgeny-borisov -
Category
Documents
-
view
1.232 -
download
0
description
Transcript of Javaone 2013 moscow gradle
Gradle
Евгений Борисов
О себе…
• Сингальтон не надо писать! Оставьте это Спрингу.
• Его надо пить!
Хорошо быть програмистом!
Пол дня возился чтобы
скомпилировать
Правильно, а теперь еще пол дня будешь билд делать
Начнешь криво, все будет криво
Что сегодня входит в билд?
• VCS
• CI scripts & different xml configurations
• Dependency management
• Deployment (clustering)
• Unit and sanity Tests
• Documentation
• …
Внучок не придет сегодня, мэйл прислал… У него билд падает
Какие есть инструменты стройки?
Я использую:
1. Ант
2. Грэйдл
3. Мавен
4. Айви
5. Я все делаю руками
Декларативная & Императивная
Декларативная и Императивная
• ANT – императивный
• Maven - декларативный Не совсем…
Maven
<build>
</build>
Мы любим тебя, XML
<build>
</build>
Чей билд лучше?
А мой билд еще и на машинке умеет…
У нас тоже две беды…
• XML-ы и отсутсвие DSL
И кто сегодня Чак Норрис?
Чем gradle хорош?
• Нет привязки к конкретному типу проекта
• Мощный DSL, которые легко расширять
• Groovy
• Эффективность билда
– таски могут бежать параллельно
– Инкрементальная сборка
Нельзя просто так говорить! Давайте немножечко побилдим…
А почему не видно того, что печатает
тест?
test { testLogging.showStandardStreams = true }
Build task dependency graph
Так ведь это как в Мавене!!!
Совсем нет…
• Можно добавить / убрать depency к существуещему таску
• Можно добавить поведение
• Можно изменить настройки таска
Build task dependency graph
Мне нужен WAR! Я понятно объясняю?
Давайте напишем свой Task
1. Class MyTask extends DefaultTask
2. Прописать метод @TaskAction
3. Добавить его в DSL
4. Всё!
Какие еще есть плагины?
• 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
Как написать свой Plugin
• Зачем писать свои плагины, разве мало того, что можно писать свои таски?
• Чтобы расширять DSL.
– Мы хотим декларативный БИЛД!
Хочу плагин!!! Что делать?
• Как писать плагин: https://bitbucket.org/davidmc24/gradle-bintray-plugin/src/6adc1aca5ed712b8802fe6b3830b2d860d9fda88/Bintray.gradle?at=default
• Добавить: buildscript: apply from: 'gradle/Bintray.gradle'
• Юзить: repositories { bintray.jcenter() }
Не пора ли переходить на Грэйдл?
Вспомните молодость. Когда то мы не боялись новых технологий…
Мне из этого болота не вылезти…
Я погряз в Анте капитально…
Всем кто любит ант…
Как перейти с Анта на Грэйдл
Как перейти с Анта
С мавена так не получится…
Получится получится
maven2gradle plugin
Напишите это в вашем build.gradle : apply plugin:’maven2Gradle’ Положите этот скрипт туда где pom Запустите gradle build
А что почитать?
• http://www.gradle.org/docs/current/userguide/userguide.html
• http://www.gradle.org/docs/current/dsl/
• http://www.gradle.org/docs/current/javadoc/
Вопросы и Ответы
• Ваши вопросы, поделки и рисунки присылайте по адресу: [email protected]