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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Mavenʵս¡ª¡ªGradle£¬¹¹½¨¹¤¾ßµÄδÀ´£¿
 
×÷Õß ÐíÏþ±ó£¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-10-10
  3562  次浏览      28
 

MavenÃæÁÙµÄÌôÕ½

Èí¼þÐÐҵоɽ»ÌæµÄËÙ¶ÈÖ®¿ìÍùÍùÁîÈË߯É࣬²»ÓöàÉÙʱ¼ä£¬Äã¾Í»á·¢ÏÖÔø¾­´óºì´ó×ϵļ¼ÊõÒѾ­³ÉΪÁË×òÈջƻ¨£¬µ±È»£¬MavenÒ²²»»áÀýÍâ¡£ËäȻĿǰËü»ù±¾ÉÏÊÇJava¹¹½¨µÄÊÂʵ±ê×¼£¬µ«ÎÒÃÇÒ²ÄÜ¿´µ½ÐÂÐ˵Ť¾ßÔÚÓ¿ÏÖ£¬±ÈÈç»ùÓÚGoovyµÄGradle£¬¶øÈ¥ÄêHibernateÐû²¼´ÓMavenÇ¨ÒÆÖÁGradleÕâһʼþ¸üÊÇÎüÒýÁ˲»ÉÙÑÛÇò¡£ÔÚ´Ë֮ǰ£¬ÎÒÒ²Ìýµ½Á˲»ÉÙ¶ÔMavenµÄ±§Ô¹£¬°üÀ¨XMLµÄ·±Èߣ¬²»¹»Áé»î£¬Ñ§Ï°ÇúÏß¶¸Ç͵ȵȡ£ÄÇGradleÊÇ·ñÄܹ»Ôڼ̳РMavenÓŵãµÄ»ù´¡ÉÏ£¬¿Ë·þÕâЩȱµãÄØ£¿´ø×ÅÕâ¸öÒÉÎÊ£¬ÎÒ¿ªÊ¼ÔĶÁGradleµÄÎĵµ²¢³¢ÊÔ׎«Ò»¸ö»ùÓÚMavenµÄÏîĿת³ÉÓÃGradle¹¹½¨£¬±¾ÎÄËùÒª½²Êö´ó¸Å¾ÍÊÇÕâÑùµÄÒ»¸öÌåÑé¡£ÐèҪעÒâµÄÊÇ£¬±¾ÎÄÍêÈ«ÊÇ»ùÓÚMavenµÄ½Ç¶ÈÀ´¿´GradleµÄ£¬Òò´Ë¶ÔÓÚAntÓû§À´Ëµ£¬Êӽǿ϶¨»á´óÓв»Í¬¡£

Gradle³õÌåÑé

GradleµÄ°²×°·Ç³£·½±ã£¬ÏÂÔØZIP°ü£¬½âѹµ½±¾µØÄ¿Â¼£¬ÉèÖà GRADLE_HOME »·¾³±äÁ¿²¢½« GRADLE_HOME/bin ¼Óµ½ PATH »·¾³±äÁ¿ÖУ¬°²×°¾ÍÍê³ÉÁË¡£Óû§¿ÉÒÔÔËÐÐgradle -vÃüÁîÑéÖ¤°²×°£¬ÕâЩ³õʼµÄ²½ÖèºÍMavenûʲôÁ½Ñù¡£GradleĿǰµÄ°æ±¾ÊÇ1.0-milestone-1£¬¸ù¾ÝÆäWikiÉϵÄRoadmap£¬ÔÚ1.0Õýʽ°æ·¢²¼Ö®Ç°£¬»¹ÖÁÉÙ»áÓÐ3¸öÀï³Ì±®°æ±¾£¬¶ø1.0µÄ·¢²¼ÈÕÆÚ×î¿ìÒ²²»»áÔçÓÚ6Ô·ݡ£¶øÕýÊÇÕâÑùÒ»¸ö¿´ÆðÀ´Ëƺõ»¹²»Ôõô³ÉÊìµÄÏîÄ¿£¬È´ÓÐ×ÅÈúܶà³ÉÊìÏîÄ¿¶¼º¹ÑÕµÄÎĵµ£¬Æä°üÀ¨Á˰²×°Ö¸ÄÏ¡¢»ù±¾½Ì³Ì¡¢ÒÔ¼°Ò»·Ý½ü300Ò³µÄÈ«ÃæÓû§Ö¸ÄÏ¡£Õâ¶ÔÓÚÓû§À´ËµÊǷdz£ÓѺõģ¬Í¬Ê±Ò²ËµÃ÷ÁËGradleµÄ¿ª·¢Õß¶ÔÕâ¸öÏîÄ¿·Ç³£ÓÐÐÅÐÄ£¬ÒªÖªµÀ±àд²¢Î¬»¤Îĵµ¿É²»ÊǼþÇáËɵŤ×÷£¬¶ÔÓÚGradleÕâÑùδÀ´ÈÔ¿ÉÄÜ·¢ÉúºÜ´ó±ä¶¯µÄÏîÄ¿À´ËµÓÈΪÈç´Ë¡£

ÀàËÆÓÚMavenµÄpom.xmlÎļþ£¬Ã¿¸öGradleÏîÄ¿¶¼ÐèÒªÓÐÒ»¸ö¶ÔÓ¦µÄbuild.gradleÎļþ£¬¸ÃÎļþ¶¨ÒåһЩÈÎÎñ£¨task£©À´Íê³É¹¹½¨¹¤×÷£¬µ±È»£¬Ã¿¸öÈÎÎñÊÇ¿ÉÅäÖõģ¬ÈÎÎñÖ®¼äÒ²¿ÉÒÔÒÀÀµ£¬Óû§ÒàÄÜÅäÖÃȱʡÈÎÎñ£¬¾ÍÏñÕâÑù£º

defaultTasks 'taskB'

task taskA << {
    println "i'm task A"
}

task taskB << {
    println "i'm task B, and I depend on " + taskA.name
}

taskB.dependsOn taskA

ÔËÐÐÃüÁî$ gradle -qÖ®ºó£¨²ÎÊýqÈÃGradle²»Òª´òÓ¡´íÎóÖ®ÍâµÄÈÕÖ¾£©£¬¾ÍÄÜ¿´µ½ÈçϵÄÔ¤ÆÚÊä³ö£º

i'm task A
i'm task B, and I depend on taskA

Õâ²»ÊǺÍAntÈç³öÒ»ÕÞô£¿µÄÈ·ÊÇÕâÑù£¬ÕâÖÖ¡°ÈÎÎñ¡±µÄ¸ÅÄîÓëÓ÷¨ÓëAnt¼°ÆäÏàËÆ¡£AntÈÎÎñÊÇGradleÊÀ½çµÄµÚÒ»¹«Ãñ£¬Gradle¶ÔAnt×öÁ˺ܺõɡ£³ý´ËÖ®Í⣬ÓÉÓÚGradleʹÓõÄGrovvy½Å±¾½ÏXML¸üΪÁé»î£¬Òò´Ë£¬¼´Ê¹ÎÒ×Ô¼º²»ÊÇAntÓû§£¬ÎÒÒ²ÈÔÈ»¾õµÃAntÓû§»áϲ»¶ÉÏGradle¡£

ÒÀÀµ¹ÜÀíºÍ¼¯³ÉMaven²Ö¿â

ÎÒÃÇÖªµÀÒÀÀµ¹ÜÀí¡¢²Ö¿â¡¢Ô¼¶¨ÓÅÓÚÅäÖõȸÅÄîÊÇMavenµÄºËÐÄÄÚÈÝ£¬Å׿ªÆäʵÏÖÊÇ·ñ×îÓŲ»Ì¸£¬¸ÅÄî±¾ÉíûʲôÎÊÌ⣬²¢ÇÒÒѾ­±»¹ã·ºÑ§Ï°ºÍ½ÓÊÜ¡£ÄÇGradleʵÏÖÁËÕâЩÓÅÐã¸ÅÄîÁËô£¿´ð°¸Êǿ϶¨µÄ¡£

ÏÈ¿´ÒÀÀµ¹ÜÀí£¬ÎÒÓÐÒ»¸ö¼òµ¥µÄÏîÄ¿ÒÀÀµÓÚһЩµÚÈý·½Àà¿â°üÀ¨SpringFramework¡¢JUnit¡¢KaptchaµÈµÈ¡£Ô­À´µÄMaven POMÅäÖôó¸ÅÊÇÕâÑùµÄ£¨Æª·ù¹ØÏµ£¬Ê¡ÂÔÁ˲¿·Ö¸¸POMÅäÖã©£º


        2.3
    

    
        
            com.google.code.kaptcha
            kaptcha
            ${kaptcha.version}
            jdk15
        
        
            org.springframework
            spring-core
        
        
            org.springframework
            spring-beans
        
        
            org.springframework
            spring-context
        
        
            junit
            junit
        
    

È»ºóÎÒ½«Æäת»»³ÉGradle½Å±¾£¬½á¹ûÊǾªÈ˵ģº

dependencies {
    compile('org.springframework:spring-core:2.5.6')
    compile('org.springframework:spring-beans:2.5.6')
    compile('org.springframework:spring-context:2.5.6')
    compile('com.google.code.kaptcha:kaptcha:2.3:jdk15')
    testCompile('junit:junit:4.7')
}

×¢ÒâÅäÖôÓÔ­À´µÄ28ÐÐËõ¼õÖÁ7ÐУ¡Õ⻹²»ËãÎÒÊ¡ÂÔµÄһЩ¸¸POMÅäÖá£ÒÀÀµµÄgroupId¡¢artifactId¡¢ version£¬scopeÉõÖÁÊÇclassfier£¬Ò»µã¶¼²»ÉÙ¡£½ÏÖ®ÓÚMaven»òÕßAntµÄXMLÅäÖýű¾£¬GradleʹÓõÄGrovvy½Å±¾É±ÉËÁ¦Ì«´óÁË£¬°®ÃÀÖ®ÐÄ£¬È˽ÔÓÐÖ®£¬Ïà±ÈÓÚÆßÑ®Àϸ¾ËÉËÉ¿å¿åµÄÖåÎÆ£¬´ó¼Ò¿Ï¶¨¶¼Ï²»¶ÉÙÅ®½ôÖµÄÁ³µ°£¬XML¾ÍÊÇÄÇÀϸ¾µÄÖåÎÆ¡£

¹ØÓÚGradleµÄÒÀÀµ¹ÜÀíÆð³õÎÒÓÐÒ»µãµ£ÐÄ£¬¾ÍÊÇËüÊÇ·ñÓд«µÝÐÔÒÀÀµµÄ»úÖÆÄØ£¿¾­¹ýÎĵµÔĶÁºÍʵ¼ÊÊÔÑéºó£¬Õâ¸öÒÉÂÇ´òÏûÁË£¬GradleÄܹ»½âÎöÏÖÓеÄMaven POM»òÕßIvyµÄXMLÅäÖ㬴ӶøµÃµ½´«µÝÐÔÒÀÀµµÄÐÅÏ¢£¬²¢ÇÒÒýÈëµ½µ±Ç°ÏîÄ¿ÖУ¬ÕâʵÔÚÊÇÒ»¸ö´ÏÃ÷µÄ×ö·¨¡£ÔÚ´Ë»ù´¡ÉÏ£¬ËüÒ²Ö§³ÖÅųý´«µÝÐÔÒÀÀµ»òÕß¸É´à¹Ø±Õ´«µÝÐÔÒÀÀµ£¬ÆäÖеڶþµãÊÇMavenËù²»¾ß±¸µÄÌØÐÔ¡£

×Ô¶¯»¯ÒÀÀµ¹ÜÀíµÄ»ùʯÊDzֿ⣬MavenÖÐÑë²Ö¿âÒѾ­³ÉΪÁËJava¿ª·¢Õß²»¿É»òȱµÄ×ÊÔ´£¬Gradle¼ÈÈ»ÓÐÒÀÀµ¹ÜÀí£¬ÄDZØÈ»Ò²µÃÓõ½²Ö¿â£¬Õ⵱ȻҲ°üÀ¨ÁËMavenÖÐÑë²Ö¿â£¬¾ÍÏñÕâÑù£º

repositories {
    mavenLocal()
    mavenCentral()
    mavenRepo urls: "http://repository.sonatype.org/content/groups/forge/"
}

Õâ¶Î´úÂ뼸ºõ²»ÓýâÊÍ£¬¾ÍÊÇÔÚGradleÖÐÅäÖÃʹÓÃMaven±¾µØ²Ö¿â¡¢ÖÐÑë²Ö¿â¡¢ÒÔ¼°×Ô¶¨Ò嵨ַ²Ö¿â¡£ÔÚÎÒʵ¼Ê¹¹½¨ÏîÄ¿µÄʱºò£¬ÄÜ¿´µ½ÖÕ¶Ë´òÓ¡µÄÏÂÔØÐÅÏ¢£¬ÏÂÔØºóµÄÎļþ±»´æ´¢ÔÚ USER_HOME/.gradle/cache/ Ŀ¼Ï¹©ÏîĿʹÓã¬ÕâÖÖʵÏֵķ½·¨ÓëMavenÓÖÊǼ°ÆäÀàËÆÁË£¬¿ÉÒÔ˵Gradle²»½ö×î´óÏ޶ȵļ̳ÐMavenµÄºÜ¶àÀíÄ²Ö¿â×ÊÔ´Ò²ÊÇÖ±½ÓÄÃÀ´Óá£

GradleÏîĿʹÓÃMavenÏîÄ¿Éú³ÉµÄ×ÊÔ´ÒѾ­²»ÊǸöÎÊÌâÁË£¬½Ó×ÅÐèÒª·´¹ýÀ´¿¼ÂÇ£¬MavenÓû§ÊÇ·ñÄܹ»Ê¹Óà GradleÉú³ÉµÄ×ÊÔ´ÄØ£¿»òÕ߸ü¼òµ¥µãÎÊ£¬GradleÏîÄ¿Éú³ÉµÄ¹¹¼þÊÇ·ñ¿ÉÒÔ·¢²¼µ½Maven²Ö¿âÖй©ÈËʹÓÃÄØ£¿ÕâÒ»µã·Ç³£ÖØÒª£¬ÒòΪÈç¹û×ö²»µ½ÕâÒ»µã£¬Äã¿ÉÄܾͻᶪʧ´óÁ¿µÄÓû§¡£ÐÒÔ˵ÄÊÇGradleÔٴθø³öÁËÁîÈËÂúÒâµÄ´ð°¸¡£Ê¹ÓÃGradleµÄMaven Plugin£¬Óû§¾Í¿ÉÒÔÇáËɵؽ«ÏîÄ¿¹¹¼þÉÏ´«µ½Maven²Ö¿âÖУº

apply plugin: 'maven'
...
uploadArchives {
    repositories.mavenDeployer {
        repository(url: "http://localhost:8088/nexus/content/repositories/snapshots/") {
            authentication(userName: "admin", password: "admin123")
            pom.groupId = "com.juvenxu"
            pom.artifactId = "account-captcha"
        }
    }
}

ÔÚÉÏ´«µÄ¹ý³ÌÖУ¬GradleÄܹ»»ùÓÚbuild.gradleÉú³É¶ÔÓ¦µÄMaven POMÎļþ£¬Óû§¿ÉÒÔ×ÔÐÐÅäÖÃPOMÐÅÏ¢£¬±ÈÈçÕâÀïµÄgroupIdºÍartifactId£¬¶øÖîÈçÒÀÀµÅäÖÃÕâÑùµÄÄÚÈÝ£¬GradleÊÇ»á×Ô¶¯°ïÄã½øÐÐת»»µÄ¡£ÓÉÓÚMavenÏîĿ֮¼äÒÀÀµ½»»¥µÄÖ±½Ó;¾¶¾ÍÊDzֿ⣬¶øGradle¼ÈÄܹ»Ê¹ÓÃMaven²Ö¿â£¬Ò²ÄÜÒÔMavenµÄ¸ñʽ½«×Ô¼ºµÄÄÚÈÝ·¢²¼µ½²Ö¿âÖУ¬Òò´Ë´Ó¼¼Êõ½Ç¶ÈÀ´Ëµ£¬¼´Ê¹ÔÚÒ»¸ö»ùÓÚMavenµÄ´ó»·¾³ÖУ¬¾Ö²¿Ê¹ÓÃGradleÒ²¼¸ºõ²»»áÊÇÒ»¸öÎÊÌâ¡£

Ô¼¶¨ÓÅÓÚÅäÖÃ

ÈçͬAntÒ»°ã£¬Gradle¸øÁËÓû§×ã¹»µÄ×ÔÓÉÈ¥¶¨Òå×Ô¼ºµÄÈÎÎñ£¬²»¹ýͬʱGradleÒ²ÌṩÁËÀàËÆMavenµÄÔ¼¶¨ÓÉÓÚÅäÖ÷½Ê½£¬ÕâÊÇͨ¹ýGradleµÄJava PluginʵÏֵ쬴ÓÎĵµÉÏ¿´£¬GradleÊÇÍÆ¼öÕâÖÖ·½Ê½µÄ¡£Java Plugin¶¨ÒåÁËÓëMavenÍêȫһÖµÄÏîÄ¿²¼¾Ö£º

1.src/main/java

2.src/main/resources

3.src/test/java

4.src/test/resources

Çø±ðÔÚÓÚ£¬Ê¹ÓÃGroovy×Ô¶¨ÒåÏîÄ¿²¼¾Ö¸ü¼ÓµÄ·½±ã£º

sourceSets {
    main {
        java {
            srcDir 'src/java'
        }
        resources {
            srcDir 'src/resources'
        }
    }
}

Gradle Java PluginÒ²¶¨ÒåÁ˹¹½¨ÉúÃüÖÜÆÚ£¬°üÀ¨±àÒëÖ÷´úÂë¡¢´¦Àí×ÊÔ´¡¢±àÒë²âÊÔ´úÂë¡¢Ö´ÐвâÊÔ¡¢ÉÏ´«¹éµµµÈµÈÈÎÎñ£º

Figure 1. GradleµÄ¹¹½¨ÉúÃüÖÜÆÚ

Ïà¶ÔÓÚMavenÍêÈ«ÏßÐÔµÄÉúÃüÖÜÆÚ£¬GradleµÄ¹¹½¨ÉúÃüÖÜÆÚÂÔ΢¸´ÔÓ£¬²»¹ýÒ²¸üΪÁé»î£¬ÀýÈçjarÕâ¸öÈÎÎñÊÇÓÃÀ´´ò°üµÄ£¬Ëü²»ÏñMavenÄÇÑùÒÀÀµÓÚÖ´ÐвâÊÔµÄtestÈÎÎñ£¬ÀàËÆµÄ£¬´ÓͼÖпÉÒÔ¿´µ½£¬Ò»¸ö×îÖÕµÄbuildÈÎÎñҲûÓÐÒÀÀµÓÚuploadArchivesÈÎÎñ¡£Õâ¸öÉúÃüÖÜÆÚ²¢Ã»Óн«Óû§ÏÞÖÆµÃºÜËÀ£¬¾Ù¸öÀý×Ó£¬ÎÒÏ£Íûÿ´Îbuild¶¼·¢²¼ SNAPSHOT°æ±¾µ½Maven²Ö¿âÖУ¬¶øÇÒÎÒÖ»ÏëʹÓÃ×î¼òµ¥µÄ$ gradle clean buildÃüÁÄÇÖ»ÐèÒªÌí¼ÓÒ»ÐÐÈÎÎñÒÀÀµÅäÖü´¿É£º

build.dependsOn 'uploadArchives'

ÓÉÓÚGradleÍêÈ«ÊÇ»ùÓÚÁé»îµÄÈÎÎñÄ£ÐÍ£¬Òò´ËºÜ¶àÊÂÇé°üÀ¨¸²¸ÇÏÖÓÐÈÎÎñ£¬Ìø¹ýÈÎÎñ¶¼·Ç³£Ò×ÓÚʵÏÖ¡£¶øÕâЩÊÂÇ飬ÔÚMavenµÄÊÀ½çÖУ¬ÊµÏÖÆðÀ´¾Í±È½ÏµÄÂé·³£¬»òÕß˵Mavenѹ¸ù¾Í²»Ï£ÍûÓû§Õâô×ö¡£

С½á

Ò»·¬ÌåÑéÏÂÀ´£¬Gradle¸øÎÒ×î´óµÄ¸Ð¾õÊÇÁ½µã¡£ÆäÒ»ÊǼò½à£¬»ùÓÚGroovyµÄ½ô´Õ½Å±¾ÊµÔÚÈÃÈ˰®²»ÊÍÊÖ£¬ÔÚ±íÊöÒâͼ·½ÃæÒ²Ã»ÓÐʲô²»ÇåÎúµÄµØ·½¡£Æä¶þÊÇÁé»î£¬¸÷ÖÖÔÚMavenÖÐÄÑÒÔÏÂÊÖµÄÊÂÇ飬ÔÚGradle¾ÍÊÇС²ËÒ»µú£¬±ÈÈçÐÞ¸ÄÏÖÓеĹ¹½¨ÉúÃüÖÜÆÚ£¬¼¸ÐÐÅäÖþÍÍê³ÉÁË£¬Í¬ÑùµÄÊÂÇ飬ÔÚMavenÖÐÄã±ØÐë±àдһ¸ö²å¼þ£¬ÄǶÔÓÚÒ»¸ö¸ÕÈëÃŵÄÓû§À´Ëµ£¬Ã»¸öÒ»Á½Ì켸ºõÊDz»¿ÉÄÜÍê³ÉµÄÈÎÎñ¡£

²»¹ý¼´Ê¹Èç´Ë£¬GradleÔÚδÀ´ÄÜ·ñÈ¡´úMaven£¬ÔÚÎÒ¿´À´Ò²»¹ÊǸöδ֪Êý¡£ËüµÄÒ»´óÕϰ­¾ÍÊÇGrovvy£¬¼¸ºõËùÓÐ Java¿ª·¢Õß¶¼ÊìϤXML£¬¿ÉÓÖÓм¸¸öÈËÁ˽âGroovyÄØ£¿Ñ§Ï°³É±¾ÕâµÀ¿²ÊǺÜÄÑ¿çÔ½µÄ£¬ºÜ¶àÈ˵ÖÖÆMaven¾ÍÊÇÒòΪѧÆðÀ´²»ÈÝÒ×£¬ÄãÏÖÔÚÈÃÒòΪһ¸ö¹¹½¨¹¤¾ßѧϰһÃÅÐÂÓïÑÔ£¨¼´Ê¹ÕâÃÅÓïÑÔºÍJava·Ç³£½Ó½ü£©£¬Äǵõ½Àäµ­µÄ»Ø¸´¼¸ºõÊDZØÈ»µÄÊÂÇé¡£GradleµÄÁíÍâÒ»¸öÎÊÌâ¾ÍÊÇËüÌ«Áé»îÁË£¬ËäÈ»ËüÖ§³ÖÔ¼¶¨ÓÅÓÚÅäÖ㬲»¹ý´Ó±¾ÎÄÄãÒ²¿´µ½ÁË£¬ÆÆ»µÔ¼¶¨ÊǶàôÈÝÒ×µÄÊÂÇé¡£È˶¼Ï²»¶×ÔÓÉ£¬°®×Ô¶¨Ò壬¾õµÃ×Ô¼ºµÄÐèÇóÊǶàôµÄÌØ±ð£¬¿ÉÊÂʵÉÏ£¬´ÓMavenµÄÁ÷ÐÐÀ´¿´£¬¼¸ºõ95%ÒÔÉϵÄÇé¿öÄã²»ÐèÒª×ÔÐÐÀ©Õ¹£¬Èç¹ûÄãÕâô×öÁË£¬Ö»»áÈù¹½¨±äµÃÄÑÒÔÀí½â¡£´ÓÕâ¸ö½Ç¶ÈÀ´¿´£¬×ÔÓÉÊǰÑË«Èн££¬Gradle¸øÁËÄã×ã¹»µÄ×ÔÓÉ£¬Ô¼¶¨ÓÅÓÚÅäÖÃÖ»ÊÇËüµÄÒ»¸öÑ¡Ïî¶øÒÑ£¬Õâ³õ¿´ÆðÀ´ºÜÓÕÈË£¬È´Ò²¿ÉÄÜʹÆäÖØµ¸AntµÄ¸²ÕÞ¡£MavenÔÚAntµÄ»ù´¡ÉÏÒýÈëÁËÒÀÀµ¹ÜÀí¡¢²Ö¿âÒÔ¼°Ô¼¶¨ÓÅÓÚÅäÖõȸÅÄÊÇÒ»¸öºÜ´óµÄ½ø²½£¬²»¹ýÔÚÎÒÏÖÔÚ¿´À´£¬Gradle²¢Ã»ÓÐÒýÈëеĸÅÄ¸øÎҸоõËüÊÇÒ»¸ö½áºÏAntºÍMavenÀíÄîµÄÓÅÐãʵÏÖ¡£

Èç¹ûÄãÁ˽âGroovy£¬Ò²Àí½âMavenµÄÔ¼¶¨ÓÅÓÚÅäÖã¬ÄÇÊÔÊÔGradleµ¹Ò²²»´í£¬ÓÈÆäÊÇËü¼¸ºõÄܺÍÏÖÓеÄMavenϵͳÎ޷켯³É£¬¶øÇÒÄãÒ²ÄÜÏíÊܵ½¼ò½à´øÀ´µÄ¼«´óÀÖȤ¡£Æäʵ˵µ½¼ò½à£¬Ò²ÐíÔÚ²»¾ÃµÄ½«À´MavenÓû§Ò²ÄÜÖ±½ÓÏíÊܵ½£¬Polyglot MavenÔÚÕâ·½ÃæÒѾ­×öÁ˲»ÉÙ¹¤×÷¡£±¾ÎÄÍêÈ«»ùÓÚMavenµÄÊӽǽéÉÜGradleÕâÒ»¹¹½¨¹¤¾ßµÄÐÂÐ㣬²»¹ýÏÞÓÚÆª·ùÔ­Òò£¬ÎÞ·¨ÉîÈëGradleµÄ·½·½ÃæÃ棬ÀýÈçGradleÒ²Ö§³Ö¶àÄ£¿é¹¹½¨£¬ËüÌṩÁËGUI²Ù×÷½çÃæ£¬Ö§³ÖGrovvy£¨ÀíËùµ±È»£©ºÍScalaÏîÄ¿µÈµÈ¡£ÓÐÐËȤµÄ¶ÁÕß¿ÉÒÔ×ÔÐнøÒ»²½Á˽⡣

   
3562 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

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

³ÖÐø¼¯³É½éÉÜ
ʹÓÃ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