gdub A gradlew / gradle wrapper.开源项目

我要开发同款
匿名用户2021年11月23日
53阅读
开发技术SHELL
所属分类终端/远程登录、应用工具
授权协议MIT License

作品详情

Thisprojectisobsolete.Pleaseuse'gng'instead.VisitatgngWhat'sgdub?

gdub(gwonthecommandline)isagradle/gradlewwrapper.NottobeconfusedwiththeGradleWrapper,gwinvokes./gradlewonprojectswhereoneisconfigured,andfallsbacktousethegradlefromthe$PATHifawrapperisnotavailable.Also,gwis66%shortertotypethangradleand78%shortertotypethan./gradlew.

Installation

Therearenowafewwaystoinstallgdub,withmoreontheway.Usewhicheverismostconvenientforyouorfeelfreetosuggestanother!

Homebrew

IfyouareonOSXandnotusinghomebrew,I'mnotquitesurewhattodowithyou.Installgdubwithhomebrewlikeso:

brewinstallgdubMacPorts

IfyouuseMacPorts,youcaninstallgdublikeso:

sudoportinstallgdubbpkg

Ifyouusebpkg,youmayinstalllikeso:

bpkginstalldougborg/gdub-gInstallinggdubfromsource

YouwillprobablywanttoinstallGradlefirst.WhilethisisnottechnicallynecessaryifallyourprojectsareusingaGradleWrapper,itisagoodideatohavethelatestversionofgradleavailablesystem-widebecausesomehandyGradlefeaturesareavailableoutsidethecontextofanexistingproject.

Checkoutacopyofthegdubrepository.Then,eitheraddthegdubbindirectorytoyour$PATH,orruntheprovidedinstallcommandwiththelocationtotheprefixinwhichyouwanttoinstallgdub.Thedefaultprefixis/usr/local.

Forexample,toinstallgdubinto/usr/local/bin:

gitclonehttps://github.com/dougborg/gdub.gitcdgdub./install

Note:youmayneedtorun./installwithsudoifyoudonothavepermissiontowritetotheinstallationprefix.

Aliasingthegradlecommand

Formaximumfidelityaddagradlealiastogwtoyourshell'sconfigurationfile.

Examplebash:

echo"aliasgradle=gw">>~/.bashrcsource~/.bashrc

Fromnowonyoucanjusttypegradle...fromwhereveryouareandgwtakescareoftherest.Happinessensues!

Whygdub?Theproblemswithgradleandgradlew

gdubisaconveniencefordevelopersrunninglocalGradlecommandsandaddressesafewminorshortcomingsofgradleandgradlew'scommandlinebehaviour.Theseareknownissues,andtheyaresettobeaddressedinfutureversionsofGradle.Ifyouareinterestedinthediscussionssurroundingthem,checkout:

IssueGradle-2429SpencerAllain'sGradleForumPostPhilSwenson'sGradleForumPost

HerearetheissuesIfeelaremostimportant,andtheonesgdubattemptstoaddress:

Youhavetoprovidearelativepathtobuild.Gradle

Ifyouareusingthegradlecommand,andyouarenotinthesamedirectoryasthebuild.gradlefileyouwanttorun,youhavetoprovidegradlethepath.Dependingonwhereyouhappentobe,thiscanbesomewhatcumbersome:

$pwd~/myProject/src/main/java/org/project$gradle-b../../../../../build.gradlebuild

Withgw,thisbecomes:

$gwbuildYouhavetoprovidearelativepathtogradlew

Ifyouareusinggradlewandyouwanttorunyourbuild,youneedtodosomethingsimiliarandprovidetherelativepathtothegradlewscript:

$pwd~/myProject/src/main/java/org/project/stuff$../../../../../../gradlewbuild

Again,withgwthisbecomes:

$gwbuildYouhaveacombinationoftheaboveproblems

Idon'tevenwanttotypeoutanexampleofthis,letalonedoitonaday-to-daybasis.Useyourimagination.

Typing./gradlewtoruntheGradlewrapperiskindofinconvenient

Evenwithtabcompletionandsittingattherootofyourproject,youhavetotypeatleast./gr<tab>.ItgetsabitworseifyouhappentohaveaGradle.propertiesfile,andwiththeGradlewrapper,youhaveagradledirectorytocontendwithaswell.Asimplealiaswouldsolvethisproblem,butyoustillhavetheother(moreannoying)issuestocontendwith.

Youmeanttousetheproject'sgradlew,buttypedgradleinstead

ThiscanbeaproblemiftheprojectyouarebuildinghascustomizationstotheGradlewrapperorforsomereasonisonlycompatiblewithacertainversionofGradlethatisconfiguredinthewrapper.IfyouknowtheprojectusesGradle,youmaybetemptedtojustuseyourownsystem'sGradlebinary.Thismightbeok,oritmightcausethebuildtobreak,butifaprojecthasagradlew,itisaprettysafebetyoushoulduseit,andnotwhateverGradledistributionyouhappentohaveinstalledonyoursystem.

Thegwpayoff

Anywhereyouhappentobeonyourproject,youcanruntheGradletasksofyourprojectbytypinggw<tasks>,regardlessofwhetheryouusetheGradleWrapperinyourprojectornot.

gwworksbylookingupwardsfromyourcurrentdirectoryandwillrunthenearestbuild.Gradlefilewiththenearestgradlew.Ifagradlewcannotbefound,itwillrunthenearestbuild.Gradlewithyoursystem'sGradle.ThisisprobablyalwayswhatyouwanttodoifyouarerunningGradlefromwithinaproject'streethatusestheGradlebuildsystem.

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论