GradleÈëÃÅϵÁУ¨4£©£º´´½¨¶þ½øÖÆ·¢²¼°æ±¾
ÔÚ´´½¨ÁËÒ»¸öʵÓõÄÓ¦ÓóÌÐòÖ®ºó£¬ÎÒÃÇ¿ÉÄÜÏ뽫ÆäÓëËûÈË·ÖÏí¡£ÆäÖÐÒ»ÖÖ·½Ê½¾ÍÊÇ´´½¨Ò»¸ö¿ÉÒÔ´ÓÍøÕ¾ÉÏÏÂÔØµÄ¶þ½øÖÆÎļþ¡£
ÕâÆª½Ì³ÌÃèÊöÁËÈçºÎ´´½¨Ò»¸ö¶þ½øÖÆ·¢²¼°æ±¾£¬Âú×ãÒÔÏÂÐèÇó£º
¶þ½øÖÆ·¢²¼Ò»¶¨²»ÄÜʹÓÃËùνµÄ¡°fat jar¡±·½Ê½¡£»»¾ä»°Ëµ£¬ÎÒÃÇÓ¦ÓóÌÐòÖеÄËùÓÐÒÀÀµÒ»¶¨²»Äܱ»´ò°üµ½¸Ã³ÌÐòÏàͬµÄjar°üÖС£
¶þ½øÖÆ·¢²¼±ØÐë°üº¬Õë¶Ô*nixºÍWindows²Ù×÷ϵͳµÄÆô¶¯¸±±¾¡£
¶þ½øÖÆ·¢²¼µÄ¸ùĿ¼±ØÐë°üº¬Ðí¿ÉÖ¤¡£
ÎÒÃÇ¿ªÊ¼°É¡£
´´½¨¶þ½øÖÆ·¢²¼Îļþ
Application²å¼þÊÇÒ»ÖÖGradle²å¼þ£¬ÈÃÎÒÃÇ¿ÉÒÔÔËÐС¢°²×°Ó¦ÓóÌÐò²¢Ó÷ǡ°fat jar¡±·½Ê½´´½¨¶þ½øÖÆ·¢²¼°æ±¾¡£
»¹¼ÇµÃÎÒÃÇÔÚÉÏÆª½Ì³ÌÖÐÌáµ½µÄÒ»¸öÀý×ÓÂð£¿ÔÚËüµÄbuild.gradleÎļþÖÐ×öһЩÏàÓ¦µÄ¸ü¸Ä£¬¾Í¿ÉÒÔ½øÐжþ½øÖÆ·¢²¼ÁË¡£
ÒÆ³ýjarÈÎÎñµÄÅäÖá£
ΪÏîĿӦÓÃapplication²å¼þ¡£
¶ÔÓ¦ÓóÌÐòµÄÖ÷Àà½øÐÐÅäÖã¬ÉèÖÃmainClassNameÊôÐÔ¡£
ÔÚbuild.gradleÎļþÖÐ×÷³öÒÔÉϸü¸Äºó£¬½á¹ûÈçÏ£¨Ïà¹Ø²¿·ÖÒѾ¸ßÁÁ£©£º
apply plugin: 'application' apply plugin: 'java' repositories { mavenCentral() } dependencies { compile 'log4j:log4j:1.2.17' testCompile 'junit:junit:4.11' } mainClassName = 'net.petrikainulainen.gradle.HelloWorld' |
Application²å¼þÔÚÏîÄ¿ÖÐÌí¼ÓÁË5¸öÈÎÎñ£º
runÈÎÎñÓÃÒÔÆô¶¯Ó¦ÓóÌÐò¡£
startScriptsÈÎÎñ»áÔÚbuild/scriptsĿ¼Öд´½¨Æô¶¯½Å±¾£¬Õâ¸öÈÎÎñËù´´½¨µÄÆô¶¯½Å±¾ÊÊÓÃÓÚWindowsºÍ*nix²Ù×÷ϵͳ¡£
installAppÈÎÎñ»áÔÚbuild/install/[project
name]Ŀ¼Öа²×°Ó¦ÓóÌÐò¡£
distZipÈÎÎñÓÃÒÔ´´½¨¶þ½øÖÆ·¢²¼²¢½«Æä´ò°üΪһ¸özipÎļþ¡£¿ÉÒÔÔÚbuild/distributionsĿ¼ÏÂÕÒµ½¡£
distTarÈÎÎñÓÃÒÔ´´½¨¶þ½øÖÆ·¢²¼²¢½«Æä´ò°üΪһ¸ötarÎļþ¡£¿ÉÒÔÔÚbuild/distributionsĿ¼ÏÂÕÒµ½¡£
ÎÒÃÇ¿ÉÒÔͨ¹ýÔÚÏîÄ¿¸ùĿ¼ÏÂÔËÐÐÒÔÏÂÃüÁgradle distZip»ògradle
distTar ´´½¨¶þ½øÖÆÎļþ¡£¼ÙÉèÎÒÃÇ´´½¨ÁËÒ»¸ö´ò°üΪzipÎļþµÄ¶þ½øÖÆÎļþ£¬Êä³öÈçÏ£º
> gradle distZip :compileJava :processResources :classes :jar :startScripts :distZip BUILD SUCCESSFUL Total time: 4.679 secs |
Èç¹û½«application²å¼þ´´½¨µÄ¶þ½øÖÆÎļþ½âѹËõ£¬¿ÉÒԵõ½ÒÔÏÂĿ¼½á¹¹£º
binĿ¼£º°üÀ¨Æô¶¯½Å±¾¡£
libĿ¼£º°üÀ¨Ó¦ÓóÌÐòµÄjarÎļþÒÔ¼°ËüµÄÒÀÀµ¡£
Äã¿ÉÒÔÔĶÁGradle Application²å¼þÓû§Ö¸ÄÏ£¨µÚ45Õ£©Á˽â¸ü¶à¹ØÓÚApplication²å¼þÐÅÏ¢¡£
ÏÖÔÚ£¬ÎÒÃÇ¿ÉÒÔ´´½¨Ò»¸ö¼¸ºõÄÜÂú×ãËùÓÐÐèÇóµÄ¶þ½øÖÆ·¢²¼ÁË¡£²»¹ý£¬ÎÒÃÇÈÔÈ»ÐèÒªÔÚÎÒÃǶþ½øÖÆ·¢²¼µÄ¸ùĿ¼ÏÂÌí¼ÓÓ¦ÓóÌÐòµÄÐí¿ÉÖ¤¡£ÏÂÃæÎÒ¾ÍÀ´¿´Ò»Ï£¬ÈçºÎ×öµ½ÕâÒ»µã¡£
ÔÚ¶þ½øÖÆ·¢²¼°æ±¾ÖÐÌí¼ÓÓ¦ÓóÌÐòÐí¿ÉÖ¤
ÎÒÃÇ¿ÉÒÔͨ¹ýÒÔϲ½Ö裬ÔÚ¶þ½øÖÆ·¢²¼ÖÐÌí¼ÓÓ¦ÓóÌÐòÐí¿ÉÖ¤£º
´´½¨Ò»¸öÈÎÎñ£¬½«Ðí¿ÉÖ¤´ÓÏîÄ¿µÄ¸ùĿ¼¸´ÖƵ½buildĿ¼Ï¡£
½«Ðí¿ÉÖ¤¼ÓÈëµ½Ëù´´½¨µÄ¶þ½øÖÆ·¢²¼µÄ¸ùĿ¼Ï¡£
ÎÒÃÇÀ´×Ðϸ¿´Ò»ÏÂÕâЩ²½ÖèµÄÏêÇé¡£
½«Ðí¿ÉÖ¤Îļþ¸´ÖƵ½buildĿ¼ÏÂ
LICENSEÎļþ°üº¬ÁËÎÒÃÇÓ¦ÓóÌÐòµÄÐí¿ÉÐÅÏ¢£¬¿ÉÒÔÔÚÏîÄ¿µÄ¸ùĿ¼ÏÂÕÒµ½Ëü¡£
¿ÉÒÔͨ¹ýÒÔϲ½Ö轫Ðí¿ÉÖ¤Îļþ¸´ÖƵ½buildĿ¼Ï£º
´´½¨Ò»¸öеÄCopyÈÎÎñ£¬ÃûΪcopyLicense¡£
ʹÓÃCopySpec½Ó¿ÚÖеÄfrom()·½·¨ÅäÖÃÔ´Îļþ£¬½«¡°LICENSE¡±×÷Ϊ²ÎÊýµ÷Óá£
ʹÓÃCopySpec½Ó¿ÚÖÐinto()·½·¨ÅäÖÃtargetĿ¼£¬½«$buildDirÊôÐÔ×÷Ϊ²ÎÊýµ÷Óá£
ÔÚÍê³ÉÕâЩ²½ÖèÒÔºó£¬build.gradleÎļþÈçÏ£¨Ïà¹Ø²¿·ÖÒѸßÁÁ£©£º
apply plugin: 'application' apply plugin: 'java' repositories { mavenCentral() } dependencies { compile 'log4j:log4j:1.2.17' testCompile 'junit:junit:4.11' } mainClassName = 'net.petrikainulainen.gradle.HelloWorld' task copyLicense(type: Copy) { from "LICENSE" into "$buildDir" } |
ÏÖÔÚ£¬ÎÒÃÇÒѾ´´½¨ÁËÒ»¸öÈÎÎñ£¬½«LICENSEÎļþ´ÓÏîÄ¿µÄ¸ùĿ¼¸´ÖƵ½buildĿ¼Ï¡£È»¶ø£¬µ±ÎÒÃÇÔÚÏîÄ¿¸ùĿ¼ÏÂÔËÐÐÃüÁgradle
distZip£¬»á¿´µ½ÒÔÏÂÊä³ö£º
> gradle distZip :compileJava :processResources :classes :jar :startScripts :distZip BUILD SUCCESSFUL Total time: 4.679 secs |
»»¾ä»°Ëµ£¬ÎÒÃÇеÄÈÎÎñ»¹Ã»Óб»ÒýÈë¡£ËùÒÔÀíËùµ±È»µÄ£¬¶þ½øÖÆ·¢²¼ÖÐҲûÓаüº¬Ðí¿ÉÖ¤¡£ÈÃÎÒÃÇÀ´ÐÞ¸´Õâ¸öÎÊÌâ¡£
½«Ðí¿ÉÖ¤Îļþ¼ÓÈëµ½¶þ½øÖÆ·¢²¼ÎļþÖÐ
ÎÒÃÇ¿ÉÒÔͨ¹ýÒÔϲ½Ö轫Ðí¿ÉÖ¤Îļþ¼ÓÈëµ½¶þ½øÖÆ·¢²¼ÎļþÖУº
½«copyLicenseÈÎÎñ´ÓÒ»¸öCopyÈÎÎñ¸ÄΪÕý³£µÄGradleÈÎÎñ£¬Ö»ÐèÔÚËüµÄÉùÃ÷ÖÐÒÆ³ý¡°(type:
Copy)¡±×Ö·û´®¡£
°´ÕÕÒÔϲ½ÖèÐÞ¸ÄcopyLicenseÈÎÎñ
ÅäÖÃcopyLicenseÈÎÎñÊä³ö¡£´´½¨Ò»¸öеÄÎļþ¶ÔÏó£¬Ö¸ÏòbuildĿ¼µÄÐí¿ÉÖ¤Îļþ£¬²¢½«ÆäÉèÖÃΪoutputs.fileÊôÐÔÖµ¡£
½«Ðí¿ÉÖ¤Îļþ´ÓÏîÄ¿µÄ¸ùĿ¼¸´ÖƵ½buildĿ¼Ï¡£
Application²å¼þÔÚÏîÄ¿ÖÐÉèÖÃÁËÒ»¸öCopySpecÊôÐÔ£¬ÃûΪapplicationDistribution¡£ÎÒÃÇ¿ÉÒÔʹÓÃÕâ¸öÊôÐÔÔÚÒÑ´´½¨µÄ¶þ½øÖÆÎļþÖмÓÈëÐí¿ÉÖ¤Îļþ£¬²½ÖèÈçÏ£º
ʹÓÃCopySpec½Ó¿ÚÖеÄfrom()·½·¨ÅäÖÃÐí¿ÉÖ¤ÎļþµÄλÖ㬽«copyLicenseÈÎÎñµÄÊä³ö×÷Ϊ·½·¨²ÎÊý¡£
ʹÓÃCopySpec½Ó¿ÚÖÐinto()·½·¨ÅäÖÃtargetĿ¼£¬½«Ò»¸ö¿ÕµÄ×Ö·û´®×÷Ϊ²ÎÊýµ÷Ó÷½·¨¡£
ÔÚʵÏÖÁËÕâЩ²½ÖèÒÔºó£¬build.gradleÎļþÈçÏ£¨Ïà¹Ø²¿·ÖÒѸßÁÁ£©£º
apply plugin: 'application' apply plugin: 'java' repositories { mavenCentral() } dependencies { compile 'log4j:log4j:1.2.17' testCompile 'junit:junit:4.11' } mainClassName = 'net.petrikainulainen.gradle.HelloWorld' task copyLicense { outputs.file new File("$buildDir/LICENSE") doLast { copy { from "LICENSE" into "$buildDir" } } } applicationDistribution.from(copyLicense) { into "" } |
ÔÚÏîÄ¿¸ùĿ¼ÏÂÔËÐÐÃüÁîgradle distZipʱ£¬»á¿´µ½ÒÔÏÂÊä³ö£º
> gradle distZip :copyLicense :compileJava :processResources :classes :jar :startScripts :distZip BUILD SUCCESSFUL Total time: 5.594 secs |
¿ÉÒÔ¿´µ½£¬copyLicenseÈÎÎñÏÖÔÚÒѾ±»ÒýÈëÁË¡£ÎÒÃÇ¿ÉÒÔ¶Ô¶þ½øÖÆÎļþ½âѹËõ£¬ÔÚ¸ùĿ¼Ï¾ÍÄÜ·¢ÏÖLICENSEÎļþÁË¡£
×îºó£¬ÎÒÃǶÔÕâÆª½Ì³ÌÖÐËùѧµ½µÄ¶«Î÷½øÐÐ×ܽᡣ
×ܽá
ÕâÆª½Ì³ÌΪÎÒÃǽÌÊÚÁËÈý·½ÃæÄÚÈÝ£º
ѧ»áʹÓÃapplication²å¼þ´´½¨Ò»¸ö¶þ½øÖÆ·¢²¼¡£
ѧ»áʹÓÃCopyÈÎÎñ½«Ò»¸öÎļþ´ÓԴĿ¼¸´ÖƵ½Ä¿±êĿ¼¡£
ѧ»áÈç¹û½«Îļþ¼ÓÈëµ½ÓÉApplication²å¼þ´´½¨µÄ¶þ½øÖÆ·¢²¼ÎļþÖС£
GradleÈëÃÅϵÁУ¨5£©£º´´½¨¶àÏîÄ¿¹¹½¨
¾¡¹ÜÎÒÃÇ¿ÉÒÔ½öʹÓõ¥¸ö×é¼þÀ´´´½¨¿É¹¤×÷µÄÓ¦ÓóÌÐò£¬µ«ÓÐʱºò¸ü¹ã·ºµÄ×ö·¨Êǽ«Ó¦ÓóÌÐò»®·ÖΪ¶à¸ö¸üСµÄÄ£¿é¡£
ÓÉÓÚÕâÊÇÒ»¸ö·Ç³£ÆÕͨµÄ°¸Àý£¬Òò´Ëÿ¸ö³ÉÊìµÄ¹¹½¨¹¤¾ß¶¼±ØÐëÖ§³ÖÕâÏÄÜ£¬GradleÒ²²»ÀýÍâ¡£ÌÈÈôGradleÏîĿӵÓжàÓÚÒ»¸ö×é¼þ£¬ÎÒÃǾͽ«Æä³ÆÖ®Îª¶àÏîÄ¿¹¹½¨£¨multi-project
build£©¡£
ÕâÆª½Ì³ÌÃèÊöÁËÈçºÎʹÓÃGradle´´½¨Ò»¸ö¶àÏîÄ¿¹¹½¨¡£
ÎÒÃÇÏÈÀ´¿´Ò»¿´Gradle¹¹½¨µÄһЩÐèÇó¡£
Gradle Build µÄÐèÇó
ÎÒÃǵÄʾÀý³ÌÐòÓµÓÐÁ½¸öÄ£¿é£º
coreÄ£¿é°üº¬Ò»Ð©Í¨ÓõÄ×é¼þ£¬ËüÃÇÄܹ»±»³ÌÐòµÄÆäËûÄ£¿éʹÓá£ÔÚÎÒÃǵÄÀý×ÓÉÏ£¬Ö»°üº¬Ò»¸öÀࣺMessageServiceÀà·µ»Ø¡®Hello
World!¡¯×Ö·û´®¡£¸ÃÄ£¿éÖ»ÓÐÒ»¸öÒÀÀµ£ºËü°üº¬Ò»¸öµ¥Ôª²âÊÔ£¬Ê¹ÓÃJunit 4.11¡£
appÄ£¿é°üº¬HelloWorldÀ࣬ÊdzÌÐòµÄ¿ª¶Ë£¬Ëü´ÓMessageService¶ÔÏóÖлñÈ¡ÐÅÏ¢£¬²¢½«½ÓÊÕµ½µÄÐÅϢдÈëÒ»¸öÈÕÖ¾ÎļþÖС£¸ÃÄ£¿éÓµÓÐÁ½¸öÒÀÀµ£ºËüÐèÒªcoreÄ£¿é£¬»¹Ê¹ÓÃLog4j
1.2.17×÷ΪÈÕÖ¾¿â¡£
ÎÒÃǵÄGradle¹¹½¨»¹ÓÐÆäËûÁ½¸öÐèÇó£º
ÎÒÃDZØÐëҪʹÓÃGradleÔËÐгÌÐò¡£
ÎÒÃDZØÐëÒª´´½¨Ò»¸ö¿ÉÔËÐеĶþ½øÖÆ·¢²¼£¬¶øÇÒ²»ÄÜʹÓÃËùνµÄ¡°fat jar¡±·½Ê½¡£
Èç¹ûÄ㻹²»Çå³þÔõÑùʹÓÃGradleÔËÐгÌÐò£¬ÒÔ¼°´´½¨¿ÉÔËÐеĶþ½øÖÆ·¢²¼£¬ÔÚÔĶÁÕâÆª½Ì³Ìǰ£¬ÄãÓ¦¸ÃÏÈÔĶÁÒÔÏÂÎÄÕ£¬¡¶GradleÈëÃÅϵÁУ¨4£©£º´´½¨¶þ½øÖÆ·¢²¼°æ±¾¡·
ÎÒÃǼÌÐøÀ´Ì½ÌÖÒ»ÏÂÈçºÎ´´½¨Ò»¸ö¶àÏîÄ¿¹¹½¨À´Âú×ãÎÒÃǵÄÐèÇó¡£
´´½¨Ò»¸ö¶àÏîÄ¿¹¹½¨
ÏÂÒ»²½£¬ÎÒÃǽ«´´½¨Ò»¸ö¶àÏîÄ¿µÄGradle¹¹½¨£¬°üÀ¨Á½¸ö×ÓÏîÄ¿£ºapp ºÍ core¡£³õʼ½×¶Î£¬ÏÈÒª½¨Á¢Gradle¹¹½¨µÄĿ¼½á¹¹¡£
½¨Á¢Ä¿Â¼½á¹¹
ÓÉÓÚcoreºÍappÄ£¿é¶¼Ê¹ÓÃJavaÓïÑÔ£¬¶øÇÒËüÃǶ¼Ê¹ÓÃJavaÏîÄ¿µÄĬÈÏÏîÄ¿²¼¾Ö£¬ÎÒÃǸù¾ÝÒÔϲ½Ö轨Á¢ÕýÈ·µÄĿ¼½á¹¹£º
½¨Á¢coreÄ£¿éµÄ¸ùĿ¼(core)£¬²¢½¨Á¢ÒÔÏÂ×ÓĿ¼£º
src/main/javaĿ¼°üº¬coreÄ£¿éµÄÔ´´úÂë¡£
src/test/javaĿ¼°üº¬coreÄ£¿éµÄµ¥Ôª²âÊÔ¡£
½¨Á¢appÄ£¿éµÄ¸ùĿ¼(app)£¬²¢½¨Á¢ÒÔÏÂ×ÓĿ¼£º
src/main/javaĿ¼°üº¬appÄ£¿éµÄÔ´´úÂë¡£
src/main/resourcesĿ¼°üº¬appÄ£¿éµÄ×ÊÔ´Îļþ¡£
ÏÖÔÚ£¬ÎÒÃÇÒѾ´´½¨ÁËËùÐèµÄĿ¼£¬ÏÂÒ»²½ÊÇÅäÖÃGradle¹¹½¨£¬Ïȶ԰üº¬ÔÚ¶àÏîÄ¿¹¹½¨ÖеÄÏîÄ¿½øÐÐÅäÖá£
¶Ô°üº¬ÔÚ¶àÏîÄ¿¹¹½¨ÖеÄÏîÄ¿½øÐÐÅäÖÃ
ÎÒÃÇ¿ÉÒÔͨ¹ýÒÔϲ½Ö裬¶Ô°üº¬ÔÚ¶àÏîÄ¿¹¹½¨ÖеÄÏîÄ¿½øÐÐÅäÖãº
ÔÚ¸ùÏîÄ¿µÄ¸ùĿ¼Ï´´½¨settings.gradleÎļþ£¬Ò»¸ö¶àÏîÄ¿Gradle¹¹½¨±ØÐ뺬ÓÐÕâ¸öÎļþ£¬ÒòΪËüÖ¸Ã÷ÁËÄÇЩ°üº¬ÔÚ¶àÏîÄ¿¹¹½¨ÖеÄÏîÄ¿¡£
È·±£appºÍcoreÏîÄ¿°üº¬ÔÚÎÒÃǵĶàÏîÄ¿¹¹½¨ÖС£
ÎÒÃǵÄsettings.gradleÎļþÈçÏ£º
include 'app' include 'core' |
ÅäÖà core ÏîÄ¿
ÎÒÃÇ¿ÉÒÔͨ¹ýÒÔϲ½Öè¶ÔcoreÏîÄ¿½øÐÐÅäÖãº
1. ÔÚcoreÏîÄ¿µÄ¸ùĿ¼Ï´´½¨build.gradleÎļþ¡£
2. ʹÓÃJava²å¼þ´´½¨Ò»¸öJavaÏîÄ¿¡£
3. È·±£coreÏîÄ¿´ÓMaven2ÖÐÑë²Ö¿â(central Maven2
repository)ÖлñÈ¡ÒÀÀµ¡£
4. ÉùÃ÷JUnitÒÀÀµ(°æ±¾4.11)£¬²¢Ê¹ÓÃtestCompileÅäÖÃÏ¸ÃÅäÖÃÏî±íÃ÷£ºcoreÏîÄ¿ÔÚËüµÄµ¥Ôª²âÊÔ±»±àÒëǰ£¬ÐèÒªJUnit¿â¡£
coreÏîÄ¿µÄbuild.gradleÎļþÈçÏ£º
apply plugin: 'java' repositories { mavenCentral() } dependencies { testCompile 'junit:junit:4.11' } |
ÎÒÃǼÌÐø¶ÔappÏîÄ¿½øÐÐÅäÖá£
ÅäÖÃAppÏîÄ¿
ÔÚÅäÖÃappÏîĿ֮ǰ£¬ÎÒÃÇÏÈÀ´¿ìËÙä¯ÀÀһ϶ÔÒ»Ð©ÌØÊâÒÀÀµµÄÒÀÀµ¹ÜÀí£¬ÕâЩÒÀÀµ¶¼ÊÇͬһ¸ö¶àÏîÄ¿¹¹½¨µÄÒ»²¿·Ö£¬ÎÒÃǽ«Æä³ÆÖ®Îª¡±ÏîÄ¿ÒÀÀµ¡°¡£
Èç¹û¶àÏîÄ¿¹¹½¨ÓµÓÐÏîÄ¿AºÍB£¬Í¬Ê±£¬ÏîÄ¿BµÄ±àÒëÐèÒªÏîÄ¿A£¬ÎÒÃÇ¿ÉÒÔͨ¹ýÔÚÏîÄ¿BµÄbuild.gradleÎļþÖÐÌí¼ÓÒÔÏÂÒÀÀµÉùÃ÷À´½øÐÐÒÀÀµÅäÖá£
dependencies { compile project(':A') } |
ÏÖÔÚ£¬ÎÒÃÇ¿ÉÒÔ°´ÕÕÒÔϲ½ÖèÅäÖÃappÏîÄ¿£º
ÔÚappÏîÄ¿µÄ¸ùĿ¼Ï´´½¨build.gradleÎļþ¡£
ÓÃJava²å¼þ´´½¨Ò»¸öJavaÏîÄ¿¡£
È·±£appÏîÄ¿´ÓMaven2ÖÐÑë²Ö¿â(central Maven2 repository)ÖлñÈ¡ÒÀÀµ¡£
ÅäÖÃËùÐèµÄÒÀÀµ£¬appÏîÄ¿ÔÚ±àÒëʱÐèÒªÁ½¸öÒÀÀµ£º
1£©Log4j (version 1.2.17)
2£©core Ä£¿é
´´½¨¶þ½øÖÆ·¢²¼°æ±¾
appÏîÄ¿µÄbuild.gradleÎļþÈçÏ£º
apply plugin: 'application' apply plugin: 'java' repositories { mavenCentral() } dependencies { compile 'log4j:log4j:1.2.17' compile project(':core') } mainClassName = 'net.petrikainulainen.gradle.client.HelloWorld' task copyLicense { outputs.file new File("$buildDir/LICENSE") doLast { copy { from "LICENSE" into "$buildDir" } } } applicationDistribution.from(copyLicense) { into "" } |
ÎÒÃǼÌÐø£¬ÏÂÃæÊÇÒÆ³ýcoreºÍappÏîÄ¿µÄ¹¹½¨½Å±¾ÖеÄÖØ¸´ÅäÖá£
ÒÆ³ýÖØ¸´ÅäÖÃ
µ±ÎÒÃǶԶàÏîÄ¿¹¹½¨ÖеÄ×ÓÏîÄ¿½øÐÐÅäÖÃʱ£¬ÎÒÃÇÔÚcoreºÍappÏîÄ¿µÄ¹¹½¨½Å±¾ÖÐÌí¼ÓÁËÖØ¸´µÄÅäÖá£
ÓÉÓÚÁ½¸öÏîÄ¿¶¼ÊÇJavaÏîÄ¿£¬Òò´ËËüÃǶ¼Ê¹ÓÃJava²å¼þ¡£
Á½¸öÏîÄ¿¶¼Ê¹ÓÃMaven2ÖÐÑë²Ö¿â(central Maven2 repository)¡£
»»¾ä»°Ëµ£¬Á½¸ö¹¹½¨½Å±¾¶¼°üº¬ÒÔÏÂÅäÖãº
apply plugin: 'java' repositories { mavenCentral() } |
ÈÃÎÒÃǽ«ÕâÏîÅäÖÃ×ªÒÆµ½¸ùÏîÄ¿µÄbuild.gradleÎļþÖУ¬ÔÚ´Ë֮ǰ£¬ÎÒÃDZØÐëÏÈѧϰһÏÂÈçºÎÔÚ¸ùÏîÄ¿µÄbuild.gradleÎļþÖÐÅäÖÃ×ÓÏîÄ¿¡£
Èç¹ûÎÒÃÇÏëÒªÔÚÒ»¸ö³ÆÎªcoreµÄ×ÓÏîÄ¿ÖÐÌí¼ÓÅäÖã¬ÄÇô¾Í±ØÐëÔÚ¸ùÏîÄ¿µÄbuild.gradleÎļþÖÐÌí¼ÓÒÔÏÂÆ¬¶Î£º
project(':core') { //Add core specific configuration here } |
»»¾ä»°Ëµ£¬Èç¹ûÏëÒª½«Öظ´µÄÅäÖÃ×ªÒÆµ½¸ùÏîÄ¿µÄ¹¹½¨½Å±¾ÖУ¬¾Í±ØÐ뽫ÒÔÏÂÅäÖÃÌí¼Óµ½build.gradleÎļþÖУº
project(':app') { apply plugin: 'java' repositories { mavenCentral() } } project(':core') { apply plugin: 'java' repositories { mavenCentral() } } |
²»¹ýÕâÖÖ×ö·¨ÔÚʵÖÊÉϲ¢Ã»Óиıäʲô£¬ÔÚ¹¹½¨½Å±¾ÖÐÒÀÈ»»¹´æÔÚÖØ¸´ÅäÖã¬Î¨Ò»µÄÇø±ðÊÇÖØ¸´ÅäÖÃÏÖÔÚ×ªÒÆµ½Á˸ùÏîÄ¿µÄbuild.gradleÎļþÖС£ÈÃÎÒÃÇÀ´ÏûÃðÕâÐ©ÖØ¸´ÅäÖá£
Èç¹ûÎÒÃÇÏëÒªÔÚ¸ùÏîÄ¿µÄ×ÓÏîÄ¿ÖÐÌí¼ÓͨÓõÄÅäÖã¬ÐèÒª½«ÒÔÏÂÆ¬¶ÎÌí¼Óµ½¸ùÏîÄ¿µÄbuild.gradleÎļþÖУº
subprojects { //Add common configuration here } |
ÔÚ¸ùÏîÄ¿µÄbuild.gradleÎļþÖÐÒÆ³ýÁËÖØ¸´ÅäÖú󣬴úÂëÈçÏ£º
subprojects { apply plugin: 'java' repositories { mavenCentral() } } |
Èç¹ûÎÒÃǵÄÅäÖÃÏîÊDZ»¶àÏîÄ¿¹¹½¨ÖеÄËùÓÐÏîÄ¿Ëù¹²ÏíµÄ£¬ÄÇôÐèÒªÔÚ¸ùÏîÄ¿µÄbuild.gradleÎļþÖÐÌí¼ÓÒÔÏÂÆ¬¶Î£º
allprojects { //Add configuration here } |
ÏÖÔÚ£¬ÎÒÃÇ¿ÉÒÔ´Ó×ÓÏîÄ¿µÄ¹¹½¨½Å±¾ÖÐÒÆ³ýÖØ¸´ÅäÖã¬×ÓÏîÄ¿ÐµĹ¹½¨½Å±¾ÈçÏ£º
core/build.gradleÎļþÈçÏ£º
dependencies { testCompile 'junit:junit:4.11' } |
app/build.gradleÎļþÈçÏ£º
apply plugin: 'application' dependencies { compile 'log4j:log4j:1.2.17' compile project(':core') } mainClassName = 'net.petrikainulainen.gradle.client.HelloWorld' task copyLicense { outputs.file new File("$buildDir/LICENSE") doLast { copy { from "LICENSE" into "$buildDir" } } } applicationDistribution.from(copyLicense) { into "" } |
ÏÖÔÚ£¬ÎÒÃÇÒѾ´´½¨ÁËÒ»¸ö¶àÏîÄ¿Gradle¹¹½¨£¬ÏÂÃæÈÃÎÒÃÇÀ´Ö±¹ÛµÄ¸ÐÊÜÒ»ÏÂÎÒÃÇ×öÁËЩʲô¡£
ÎÒÃǸոÕ×öÁËʲô£¿
ÔÚÎÒÃǵĶàÏîÄ¿¹¹½¨µÄ¸ùĿ¼ÏÂÖ´ÐÐÃüÁîgradle projects£¬¿ÉÒÔ¿´µ½ÈçÏÂÊä³ö£º
> gradle projects :projects ------------------------------------------------------------ Root project ------------------------------------------------------------ Root project 'multi-project-build' +--- Project ':app' --- Project ':core' To see a list of the tasks of a project, run gradle <project-path>:tasks For example, try running gradle :app:tasks BUILD SUCCESSFUL |
ÕýÈçÎÒÃÇËù¿´µ½µÄ£¬ÕâÌõÃüÁîÁгöÁ˸ùÏîÄ¿µÄ×ÓÏîÄ¿(appºÍcore)£¬ÕâÒâζ×ÅÎÒÃǸղÅÒѾ´´½¨ÁËÒ»¸ö¶àÏîÄ¿Gradle¹¹½¨£¬ËüÓµÓÐÁ½¸ö×ÓÏîÄ¿¡£
ÔÚÎÒÃǵĶàÏîÄ¿¹¹½¨µÄ¸ùĿ¼ÏÂÖ´ÐÐÃüÁîgradle tasks£¬¿ÉÒÔ¿´µ½ÈçÏÂÊä³ö£¨½öÁгöÏà¹Ø²¿·Ö£©£º
> gradle tasks :tasks ------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------ Application tasks ----------------- distTar - Bundles the project as a JVM application with libs and OS specific scripts. distZip - Bundles the project as a JVM application with libs and OS specific scripts. installApp -Installs the project as a JVM application along with libs and OS specific scripts run - Runs this project as a JVM application |
ÕýÈçÎÒÃÇËù¿´µ½µÄ£¬ÎÒÃÇ¿ÉÒÔʹÓÃGradleÔËÐгÌÐò£¬²¢´´½¨Ò»¸ö¿ÉÔËÐеĶþ½øÖÆ·¢²¼£¬ËüûÓÐʹÓÃËùνµÄ¡°fat
jar¡±·½Ê½¡£Õâ±íÃ÷ÎÒÃÇÒѾÂú×ãÁ˱¾ÎÄÖÐÒªÇóʵÏÖµÄGradle¹¹½¨µÄËùÓÐÐèÇó¡£
ÎÒÃǼÌÐøÀ´¿´Ò»Ï£¬´ÓÕâÆª½Ì³ÌÖÐÎÒÃÇѧµ½ÁËʲô¡£
×ܽá
ÕâÆª½Ì³Ì½Ì»áÁËÎÒÃÇÈý²¿·ÖÄÚÈÝ£º
Ò»¸ö¶àÏîÄ¿¹¹½¨±ØÐëÔÚ¸ùÏîÄ¿µÄ¸ùĿ¼Ï°üº¬settings.gradleÎļþ£¬ÒòΪËüÖ¸Ã÷ÁËÄÇЩ°üº¬ÔÚ¶àÏîÄ¿¹¹½¨ÖеÄÏîÄ¿¡£
Èç¹ûÐèÒªÔÚ¶àÏîÄ¿¹¹½¨µÄËùÓÐÏîÄ¿ÖмÓÈ빫ÓõÄÅäÖûòÐÐΪ£¬ÎÒÃÇ¿ÉÒÔ½«ÕâÏîÅäÖüÓÈëµ½¸ùÏîÄ¿µÄbuild.gradleÎļþÖÐ(ʹÓÃallprojects)¡£
Èç¹ûÐèÒªÔÚ¸ùÏîÄ¿µÄ×ÓÏîÄ¿ÖмÓÈ빫ÓõÄÅäÖûòÐÐΪ£¬ÎÒÃÇ¿ÉÒÔ½«ÕâÏîÅäÖüÓÈëµ½¸ùÏîÄ¿µÄbuild.gradleÎļþÖÐ(ʹÓÃsubprojects)¡£
|