|
|
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста в чем философия тасков в Gradle? После мавена никак не могу въехать. Например делаю свой таск типа Код: java 1. 2. 3. 4. Это таск предоствляется плагином и экстендит таск Jar. Строку !!! SHADOW JAR я вижу во время конфигурации билда. А как я должен запустить этот таск? После вот этого определения сделать чтото типа Код: java 1. ? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 15:41 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
aleks.eustaceПодскажите пожалуйста в чем философия тасков в Gradle? в возможности написать произвольный скрипт, делающий нечто, не предусмотренное базовым функционалом aleks.eustaceА как я должен запустить этот таск? google что ли не работает? можно например указать, что определенный стандартный task зависит от твоего и тогда он будет его выполнять сам каждый раз когда запускается. например у меня в проекте на андроиде есть такое Код: javascript 1. 2. 3. 4. 5. здесь есть ряд "стандартных" тасков с именами (если не ошибаюсь) generateReleaseResValues и generateDebugResValues, и я указываю, что они зависят от моего плагина generateValues и запускают его на выполнение каждый раз, когда запускаются сами. или такое (проект на яве) Код: javascript 1. принцип тот же, но я указываю напрямую имя стандартного таска и говорю, что он зависит от моего. Буду удивлен, если не найдется еще двойки-тройки других способов сделать тоже самое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 15:56 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
Способов там больше чем надо. Но я как то после мавена представляю себе что есть предопределенные стадии который gradle проходит. Я делаю таск и должен как то указать что этот таск должен быть встроен где то между каким-то определенными шагами, типа того? То есть подход как в ant - есть например таск jar, который поставляет плагин java, и я указываю ему так Код: java 1. Так как то? Тут такой нюанс - этот самый shadowJar (его поставляет плагин com.github.jengelman.gradle.plugins:shadow:2.0.1), так вот этот shadowJar екстендит Jar. В этом случае все равно надо писать Код: java 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 16:04 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
aleks.eustaceТут такой нюанс - этот самый shadowJar (его поставляет плагин com.github.jengelman.gradle.plugins:shadow:2.0.1), так вот этот shadowJar екстендит Jar. В этом случае все равно надо писать как насчет почитать документацию ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 16:19 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
кстати таски и напрямую можно исполнять как :module:task, но я документацию не читал, может он сам встраивается в lifecycle и выполняется вместо jar - я думаю в доке это есть, а если не в доке, так в гугле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 16:23 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
Прежде чем задавать вопросы почитал документацию. Документация какая то левая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 16:39 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
Я имел ввиду документацию по самому Gradle :) В плане как именно запускаются таски которые добавляешь там явно не написано. Такое впечатление что все уже это знают и писать про это не надо :) Можете кинуть ссылку где написано четко о том как запускать свой собственный таск в цикле выполнения билда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 16:43 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
aleks.eustaceЭто таск предоствляется плагином и экстендит таск Jar.Если вам нужно заместить стандартную задачу своей, то примерно так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 17:01 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
Спасибо, Андрей. То есть 1) я создаю свой таск MyTask Код: java 1. 2) конфигурирую свой таск для всех подпроектов- переопределяю метод doLast() Код: java 1. 2. 3. 4. 5. Таким образом Gradle на своем шаге когда он должен вызвать Jar.doLast() вызовет вместо этого myJar.doLast() - причем в каждом подпроекте. 3) Далее конфигурирую зависимость Код: java 1. То есть таск myJar будет зависеть от таска jar - и зачем, если мы вроде уже заменили этот таск jar на мой myJar? Или я чтото не понял? 4) И что тут делается и для чего - объясните пожалуйста Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 17:15 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
aleks.eustace, есть два варианта: написать что вы в действительности хотите получить на выходе и надеятся что кто-то здесь (или где-то еще) подскажет прочесть книжку (это долго и тоскливо, потому как ее начало мало коррелирует с практикой, а хочется получить результат здесь и сейчас) то что я написал - это ответ на изначальный вопрос ("какой-то плагин расширяет базовый Jar и создает новую задачу, как выполнить эту задачу при сборке"), здесь вы возможно термины не те употребляете, поэтому взаимопонимания нет, однако если я вижу что раз какая-то задача расширяет базовую, то наверное базовую при сборке выполнять не нужно, в гредле это достигается в несколько шагов: добавить в новую задачу зависимости старой поставить в зависимости старой задачи новую выключить старую задачу (удалить нельзя, точнее геморройно, от нее же тоже что-то зависит) Однако я не исключаю тот факт, что единственное что вы хотите - это просто выполнить какие-то действия до сборки jar или сразу после (ну вот вообще не вижу смысла расширять jar), это делается так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 17:32 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
aleks.eustaceТакое впечатление что все уже это знают и писать про это не надо :) лично я (и возможно так же поступает большинство) концентрируются на конкретных плагинах и конкретных задачах, а не теории - конечно не плохо понимать в целом как это работает, но нету ни времени ни желания становиться гуру грэдла. гредл система гибкая - одно и то же делается массой способов. у тебя я так понимаю конкретный плагин, вот с ним нужно и разбираться, читать его доку, гуглить по его использованию. aleks.eustaceМожете кинуть ссылку где написано четко о том как запускать свой собственный таск в цикле выполнения билда? я же приводил примеры - делаешь один из стандартных для билдов тасков зависимым от своего. не случайный конечно, а тот, который на нужном этапе выполняется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 21:49 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
Спасибо за разъяснения, немного проясняется. Ну как бы тут такое дело в плане понимания общей концепции - я например делаю таск Код: java 1. 2. 3. 4. 5. запускаю команду Код: java 1. а gradle вообще не замечает мой таск. И я в ступоре - то есть я не понимаю вообще получается концепции как оно работает. Вот кстати в этом примере - если я extends Jar - должен мой таск запуститься по команде gradle build без всяких дополнительных манипуляций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2017, 10:25 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
Кажется уже обсуждали вверху - не должен :) То есть я делаю как то так Код: java 1. 2. 3. 4. 5. и добавляю дальше конфиги Код: java 1. 2. 3. 4. а потом явно создаю инстанц моего таска и зачем-то вызываю метод doLast() Код: java 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2017, 10:30 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
Кстати вот пример кода - тут просто определяется таск Код: java 1. и больше никаких команд на этот счет https://www.mkyong.com/gradle/gradle-create-a-jar-file-with-dependencies/ А потом просто запускается Код: java 1. Получается что при такой команде все этапы, предопределенные плагином Java, пройдут, так как fatJat extends Jar - так как-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2017, 10:35 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
aleks.eustace, если вам на выходе нужны оба jar (обычный и fat), то: Код: java 1. 2. если только один (fat), то достаточно только jar переопределить: Код: java 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2017, 12:01 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
Спасибо. Еще Gradle полон магических слов. Где брать по ним информацию? Например пимер этого блока в нете такой Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. И что такое Код: java 1. - как узнать? Поиском в гугле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 12:53 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
aleks.eustace, в документации: https://docs.gradle.org/3.4.1/dsl/org.gradle.api.tasks.bundling.Jar.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 13:49 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
Там есть Код: java 1. А sourceSpecs - это имеется ввиду слово 'jar'? Почему 'jar' :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 13:21 |
|
||
|
Философия Gradle?
|
|||
|---|---|---|---|
|
#18+
aleks.eustaceТам есть Код: java 1. А sourceSpecs - это имеется ввиду слово 'jar'? Почему 'jar' :) sourceSpecs - это экземпляр org.gradle.api.file.CopySpec, коим задача jar является. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 17:43 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=63&tid=2122710]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 363ms |

| 0 / 0 |
