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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Gradle ±Ê¼Ç¡ªJava¹¹½¨ÈëÃÅ
 
×÷ÕߣºÃ²ËƵôÏß À´Ô´£ºCSDN ·¢²¼ÓÚ 2016-3-2
  3467  次浏览      27
 

GradleÊÇÒ»¸öͨÓõĹ¹½¨¹¤¾ß£¬Í¨¹ýËüµÄ¹¹½¨½Å±¾Äã¿ÉÒÔ¹¹½¨ÈκÎÄãÏëҪʵÏֵĶ«Î÷£¬²»¹ýǰÌáÊÇÄãÐèÒªÏÈдºÃ¹¹½¨½Å±¾µÄ´úÂë¡£¶ø´ó²¿·ÖµÄÏîÄ¿£¬ËüÃǵĹ¹½¨Á÷³Ì»ù±¾ÊÇÒ»ÑùµÄ£¬ÎÒÃDz»±ØÎªÃ¿Ò»¸ö¹¤³Ì¶¼±àдËüµÄ¹¹½¨´úÂ룬ÒòΪGradleÒѾ­ÎªÎÒÃÇÌṩÁËÏàÓ¦µÄ²å¼þ¡£Gradle ±¾Éí×Ô´øÁËÐí¶à²å¼þ£¬¶ø¶ÔÓÚGradleûÓеIJå¼þ£¬¿ÉÒÔÈ¥githubÉÏ¿´¿´ÓÐûÓÐÆäËûÈËʵÏÖ£¬»ò×Ô¼ºÊµÏÖ¡£¶ÔJavaÏîÄ¿¶øÑÔ£¬GradleÓÐJava²å¼þ£¬ÌṩÁËÏñ±àÒë¡¢²âÊÔ¡¢´ò°üÖ®ÀàµÄ¹¦ÄÜ¡£

ÕâÀï¼òµ¥½éÉÜÒ»ÏÂJava²å¼þ¡£

Java²å¼þΪ¹¹½¨ÏîÄ¿¶¨ÒåÁËÐí¶àµÄĬÈÏÉèÖã¬ÏñÔ´ÎļþĿ¼£¬±àÒëºóµÄÎļþ´æ·ÅλÖõȵȡ£Èç¹ûÄãÊǰ´×ÅĬÈϵĹæÔòÀ´µÄ£¬ÄÇô¹¹½¨½Å±¾½«»áºÜ¼òµ¥¡£µ±È»£¬Èç¹ûÏîÄ¿½á¹¹²»Ò»Ñù£¬Ò²¿ÉÒÔ×Ô¼ºÖ¸¶¨ÕâЩ¹æÔò¡£ÕâÀïÔݲ»½éÉÜ£¬Ö»ËµÒ»Ï»ù±¾µÄÓ÷¨¡£

1. ʹÓÃJava²å¼þ

Ö»ÐèÒªÒª¹¹½¨½Å±¾ÖÐÌí¼ÓÒÔÏ´úÂ룺

apply plugin: 'java'

¶¨ÒåÒ»¸öJavaÏîĿֻÐèÒªÌí¼ÓÕâôһ¾ä´úÂ룬Ëü»áΪÄãÌí¼ÓJava²å¼þ£¬ÒÔ¼°Ò»Ð©ÄÚÖÃÈÎÎñ¡£

ĬÈÏÇé¿öÏ£¬Gradle»áÔÚsrc/main/javaÖвéÕÒÄãµÄÔ´Â룬ÔÚsrc/test/javaÖвéÕÒÄãµÄ²âÊÔ´úÂ룬¶øsrc/main/resourcesϵÄÎļþ¶¼»á±»´ò°ü£¬src/test/resourcesϵÄÎļþ»á±»°üº¬ÔÚclasspathÖÐÓÃÓÚ²âÊÔ¡£ËùÓÐÊä³öµÄÎļþ¶¼±£´æÔÚbuildĿ¼À¶øÉú³ÉµÄjar°üÔòÊÇÔÚbuild/libsÀïÃæ¡£

2. ¹¹½¨ÏîÄ¿

Java²å¼þ°ïÄ㶨ÒåÁËÐí¶àÈÎÎñ£¬Õâ¸ö¿ÉÒÔͨ¹ýÇ°ÃæËµµÄgradle tasksÃüÁîÀ´¿´¡£µ±Ö´ÐÐgradle build ʱ£¬Gradle»áÖ´ÐбàÒ룬²âÊÔ£¬²¢ÇÒ½«Ô´ÎļþºÍ×ÊÔ´Îļþ´ò³Éjar°ü¡£

³ýÁËbuildÖ®Í⣬»¹Óм¸¸ö³£ÓõÄÈÎÎñ£¬ÈçÏ£º

clean£ºÉ¾³ýbuildĿ¼ºÍÆäËû¹¹½¨Ê±Éú³ÉµÄÎļþ¡£

assemble£º±àÒë²¢´ò°ü£¬µ«²»Ö´Ðе¥Ôª²âÊÔ¡£²»¹ýһЩÆäËû²å¼þ¿ÉÄÜ»áÔöÇ¿Õâ¸öÈÎÎñ£¬ÀýÈç War ²å¼þ»áÔÙ´ò³öwar°ü¡£

check£º±àÒë²¢²âÊÔ´úÂë¡£ÆäËû²å¼þ¿ÉÄÜ»áÔöÇ¿Õâ¸öÈÎÎñ¡£±ÈÈç Code-quality ²å¼þ»áÈÃÕâ¸öÈÎÎñÈ¥Ö´ÐÐCheckstyle¡£

3. ÍⲿÒÀÀµ

ͨ³£Ò»¸öÏîÄ¿»áÓÐÐí¶àÍⲿÒÀÀµ£¬ÎÒÃÇÐèÒªÔÚ¹¹½¨½Å±¾ÖиæËßGradleÔÚÄÄÀï¿ÉÒÔÕÒµ½ÕâЩÒÀÀµ¡£±ÈÈçÈç¹ûʹÓÃmavenÖÐÑë²Ö¿âµÄ»°£¬ÎÒÃÇ¿ÉÒÔͨ¹ýÒÔÏ´úÂëÀ´Ìí¼Ó²Ö¿â£º

repositories {  
mavenCentral()
}

È»ºóÔÙͨ¹ýÏÂÃæ´úÂëÌí¼ÓÒÀÀµ£º

dependencies {  
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
testCompile group: 'junit', name: 'junit', version: '4.+'
}

ÉÏÃæµÄ´úÂëÖУ¬ÉùÃ÷ÁËÔÚ±àÒëÆÚ£¬ÐèÒªÒÀÀµ commons-collections£¬ÔÚ²âÊÔÆÚÐèÒªÒÀÀµ junit¡£
¹ØÓÚÒÀÀµµÄÄÚÈÝ£¬ÏÂһƪ»áÓиüÏêϸµÄ±Ê¼Ç¡£

4. ×Ô¶¨ÒåÏîÄ¿

Ç°ÃæÌáµ½£¬Java²å¼þΪÏîÄ¿¶¨ÒåÁËÐí¶àĬÈÏÅäÖã¬Èç¹ûÎÒÃÇÐèÒª£¬ÕâЩÅäÖö¼ÊÇ¿ÉÒÔÓÉÎÒÃÇ×Ô¼ºÀ´¶¨ÒåµÄ¡£ÈçÏÂÃæÀý×Ó£¬Ö¸¶¨ÏîÄ¿°æ±¾ºÅºÍJDK°æ±¾ºÅ£¬²¢ÇÒÌí¼ÓһЩÊôÐÔµ½JAR°üµÄmanifestÎļþÖУº

sourceCompatibility = 1.5  
version = '1.0'
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version
}
}

Java²å¼þÌí¼ÓµÄ¶¼ÊÇÆÕͨÈÎÎñ£¬ËùÒÔÇ°ÃæÒ»Õ½éÉܵÄGradle»úÖÆÒ²¿ÉÒÔÓÃÔÚÕâÀ±ÈÈçÐÞ¸ÄÈÎÎñµÄÒÀÀµ£¬Ìí¼ÓÈÎÎñÐÐΪ£¬ÉõÖÁÖØÐ´Ä³¸öÈÎÎñµÈµÈ¡£ÏÂÃæµÄÀý×ÓÊÇÐÞ¸ÄtestÈÎÎñÀ´Ìí¼ÓϵͳÊôÐÔ£º

test {  
systemProperties 'property': 'value'
}

5. ·¢²¼JAR°ü

ÒÔÏ´úÂëÊÇ·¢²¼JAR°üµ½±¾µØÖС£·¢²¼µ½maven²Ö¿â»òjcenter²Ö¿âÒÔºóÔÙÌÖÂÛ¡£

uploadArchives {  
repositories {
flatDir {
dirs 'repos'
}
}
}

Ö´ÐÐgradle uploadArchives¼´¿É·¢²¼¸ÃJAR°ü¡£

6. ´´½¨EclipseÏîÄ¿

Èç¹ûÏë°ÑÏîÄ¿µ¼Èëµ½eclipseµ±ÖУ¬ÐèҪʹÓÃÒ»¸öEclipse²å¼þ£º

apply plugin: 'eclipse'  

Ö´ÐÐgradle eclipse»áÉú³ÉeclipseÏîÄ¿Îļþ£¬¹ØÓڴ˲å¼þÒÔºóÔÙϸ˵¡£

7. С½á

ÏÂÃæÊÇÒ»¸öÍêÕûµÄJavaÏîÄ¿¹¹½¨½Å±¾£º

apply plugin: 'java'  
apply plugin: 'eclipse'

sourceCompatibility = 1.5
version = '1.0'
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version
}
}

repositories {
mavenCentral()
}

dependencies {
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
testCompile group: 'junit', name: 'junit', version: '4.+'
}

test {
systemProperties 'property': 'value'
}

uploadArchives {
repositories {
flatDir {
dirs 'repos'
}
}
}

8. ¶àÏîÄ¿¹¹½¨

ÏîÄ¿½á¹¹£º

multiproject/  
api/
services/webservice/
shared/

Ê×ÏÈÐèÒª´´½¨Ò»¸ösettings.gradleµÄÅäÖÃÎļþ£¬À´ÉùÃ÷¹¹½¨Òª°üº¬ÄÄЩÏîÄ¿¡£ÎļþµÄÄÚÈÝÈçÏ£º

include "shared", "api", "services:webservice", "services:shared"  

¶àÏîÄ¿¹¹½¨£¬ÒÔºó»áÏê̸¡£

9. ¹«¹²ÅäÖÃ

¶Ô¶àÏîÄ¿¹¹½¨µ±ÖУ¬»áÓÐһЩÅäÖÃÊǹ²Í¬µÄ¡£Gradle»áÔÚ¸ùÏîÄ¿ÉϲÉÓÃÒ»ÖÖ½ÐÅäÖÃ×¢ÈëµÄ·½Ê½¶¨ÒåһЩ¹«¹²ÅäÖá£ËùÒÔÔÚÕâÖÖÇé¿öÏ£¬¿ÉÒÔ°ÑÕâЩ¹«¹²ÅäÖö¨ÒåÔÚ¸ùÏîÄ¿µÄÅäÖÃÎļþÀ×ÓÏîÄ¿µÄÅäÖÃÎļþ»áµü´úÕâЩÅäÖò¢×¢Èëµ½×Ô¼ºµÄÅäÖÃÖС£

ÏÂÃæÊÇʾÀý´úÂ룺

subprojects {  
apply plugin: 'java'
apply plugin: 'eclipse-wtp'

repositories {
mavenCentral()
}

dependencies {
testCompile 'junit:junit:4.11'
}

version = '1.0'

jar {
manifest.attributes provider: 'gradle'
}
}

ÉÏÃæµÄÅäÖþͻá×ÓÏîÄ¿¶¼Ó¦ÓÃÁËjavaºÍeclipse-wtp²å¼þ£¬ÉùÃ÷ÁËmavenÖÐÑë²Ö¿â£¬Ìí¼ÓÁ˲âÊÔÆÚµÄÒÀÀµjunit£¬ÒÔ¼°¶¨ÒåÁËÏîÄ¿°æ±¾°üºÍ´ò³ÉµÄjar°üÀïµÄmanifestÎļþµÄÊôÐÔ¡£

10. ÏîÄ¿ÒÀÀµ

ͬһ¸ö¹¹½¨ÖеÄÏîÄ¿¿ÉÒÔ½¨Á¢ÏîÄ¿ÒÀÀµ¡£±ÈÈçapi×ÓÏîĿҪÒÀÀµshare×ÓÏîÄ¿Éú³ÉµÄjar°ü£¬ÄÇôÔÚapi×ÓÏîÄ¿µÄ¹¹½¨½Å±¾ÖпÉÒÔʹÓÃÒÔÏ´úÂ룺

dependencies {  
compile project(':shared')
}

11. ¶àÏîÄ¿µÄ´ò°ü·¢²¼

task dist(type: Zip) {  
dependsOn spiJar
from 'src/dist'
into('libs') {
from spiJar.archivePath
from configurations.runtime
}
}

artifacts {
archives dist
}

Õâ¶Î´úÂëÎÒ»¹Ã»ÄÜÀí½â¡£ÏȼÇ×Å¡£

   
3467 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

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


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


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