Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
GradleÈëÃÅϵÁУ¨Ï£©
 
À´Ô´£º²®ÀÖÔÚÏß ·¢²¼ÓÚ 2015-9-8
  4113  次浏览      49
 

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)¡£

   
4113 ´Îä¯ÀÀ       49
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
ÏîÄ¿¹ÜÀí:MavenÈÃÊÂÇé±äµÃ¼òµ¥
³ÖÐø¼¯³É¹¤¾ßhudson
³ÖÐø¼¯³É
MavenȨÍþÖ¸ÄÏ
³ÌÐò¼¯(UMLÖеİü)Ö®¼äÑ­»·


²úÆ··¢²¼¹ÜÀí
ÅäÖùÜÀí·½·¨¡¢Êµ¼ù¡¢¹¤¾ß
¶à²ã´Î¼¯³ÉÅäÖùÜÀí
ʹÓÃCCÓëCQ½øÐÐÏîĿʵ¼ù
CVSÓëÅäÖùÜÀí
Subversion¹ÜÀíÔ±


º£º½¹É·Ý ÖØ¹¹¼°³ÖÐø¼¯³É
µçÑлªÔ´ Éè¼ÆÔ­Àí¡¢½¨Ä£ÓëÖØ¹¹
Èí¼þÅäÖùÜÀíÈÕ¹¹½¨¼°³ÖÐø¼¯³É
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
ÖйúÈí¼þÑз¢ÖÐÐÄ µ¥Ôª²âÊÔÓëÖØ¹¹
µ¥Ôª²âÊÔ¡¢Öع¹ºÍ³ÖÐø¼¯³Éʵ¼ù
ÂÞ¿ËΤ¶û C++µ¥Ôª²âÊÔ+ÖØ¹¹+Gtest