±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚUday Tatiraju£¬Òªµã£ºVert.x¼æÈÝJava 9£¬¿ÉÒ»ÆðÓÃÓÚ¹¹½¨Ó¦ÓóÌÐò¡£ºÜ¶àJavaÀà¿âÈÔÈ»²»Ö§³ÖÄ£¿é»¯¡£¶Ô¡°×Ô¶¯Ä£¿é¡±Òª¸ñÍâСÐÄ¡£
JavaÄÚÖõÄNashorn JavaScriptÔËÐл·¾³¶ÔÓÚVert.xµÄÓ¦ÓóÌÐòÀ´ËµÊ®·ÖÓÐÓᣠ|
|
ÕâÆªÎÄÕ½«½éÉÜÈçºÎʹÓÃEclipse Vert.xÉè¼ÆºÍ¿ª·¢Ò»¸ö»ùÓÚÏûÏ¢Çý¶¯µÄÏìӦʽ³ÖÐø¼¯³É£¨CI£©ÏµÍ³¡£ÎÒÃǽ«ÀûÓÃJavaƽ̨ģ¿éϵͳ£¨JPMS£©À´¹¹½¨Ò»¸öÓɶà¸öÄ£¿é×é³ÉµÄÓ¦ÓóÌÐò£¬Ä£¿éÖ®¼äͨ¹ý¶¨ÒåºÃµÄ½Ó¿Ú½øÐÐͨÐÅ¡£
ÓÐÁËJPMS£¬¼Ü¹¹Ê¦ºÍ¿ª·¢Õ߾ͿÉÒÔʹÓÃÄ£¿éÀ´Öع¹´óÐ͵ÄÒÅÁôϵͳ£¬»òÕßÓÃËüÃÇÀ´´´½¨ÐµÄÓ¦ÓóÌÐò¡£²»¹ý£¬ÒªÔÚÄ£¿éϵͳÖÐʹÓÃÒÑÓеÄJavaÀà¿â²¢²»ÊǼþÈÝÒ×µÄÊ¡£Òò´Ë£¬ÎÒÃÇÒ²»á̽ÌÖÔÚʹÓÃJPMS¹ý³ÌÖпÉÄÜÓöµ½µÄ¸÷ÖÖÎÊÌ⣬ÒÔ¼°ÈçºÎ½â¾öÕâЩÎÊÌâ¡£
ÏÈÈÃÎÒÃÇÀ´¶¨ÒåÕâ¸öCIϵͳµÄ×îС¿ÉÓòúÆ·£¨MVP£©£¬ÎÒÃǽ«°ÑËü¹¹½¨³ÉDockerÔÉúϵͳ¡£Õâ¸öϵͳÐèÒªÌṩÈçÏÂÌØÐÔ£¬²¢Í¨¹ýREST API±©Â¶³öÀ´£º
- Ö§³ÖÕë¶Ô²Ö¿âµÄCRUD²Ù×÷¡£Ò»¸ö²Ö¿â´ú±íÒ»¸öÏîÄ¿£¬²¢´øÓÐGit²Ö¿âµÄÁ¬½ÓµØÖ·¡£
- Ö§³Ö¡°¹ÜµÀ¼´´úÂ롱¡£¹ÜµÀ¶¨ÒåÁ˹¹½¨Á÷³Ì£¬²¢Ê¹ÓÃJavaScriptÀ´¶¨Ò壬JavaScript½Å±¾Îļþ¿ÉÒÔÓë´úÂë±£´æÔÚÒ»Æð¡£
- ÌṩÓÃÓÚÆô¶¯»ò¹Ø±Õ¹ÜµÀµÄAPI¡£¹ÜµÀµÄÒ»¸öʵÀý¾Í´ú±íÒ»´Î¹¹½¨¹ý³Ì¡£
¶¨ÒåºÃMVPºó£¬¾Í¿ÉÒÔ¿ªÊ¼¹¹½¨ÎÒÃǵÄϵͳÁË¡£Ê×ÏÈÒª´´½¨ÏîÄ¿µÄ¹Ç¼Ü£¬¿ÉÒÔʹÓÃIntelliJÌṩµÄ¶àÄ£¿éGradleÏîĿģ°åÀ´´´½¨¹Ç¼Ü¡£ÒòΪҪʹÓÃJDK 9£¬ËùÒÔ×îºÃ¿ÉÒÔÑ¡Ôñ×îаæµÄGradle£¨ÔÚдÕâÆªÎÄÕÂÊÇ×îаæÊÇ4.4.1£©¡£ÎÒÃÇ»¹ÐèÒªÌí¼ÓJigsaw²å¼þ£¬²¢°Ñ´úÂë¼æÈÝÐÔÉèÖÃΪJava 9¡£ÏîÄ¿µÄÖ÷Îļþ¡°build.gradle¡±Ó¦¸Ã¿´ÆðÀ´ÏñÏÂÃæÕâÑù£º

ÓëÆäËû´ó¶àÊýϵͳһÑù£¬ÎÒÃǽ«»áÓÐÒ»¸ö¹«¹²¿â£¬ÓÃÀ´·ÅÖÃʵÌåÀà¡¢¹¤¾ßÀà¡¢¹²Ïí³£Á¿¡¢²éѯ½âÎöÆ÷µÈ¡£ÎÒÃǰÑÕâ¸ö¹«¹²¿â¶¨Òå³ÉÒ»¸öJava 9Ä£¿é¡£
֮ǰÒѾ½²¹ý£¬Java 9Ä£¿éÊǽӿڡ¢ÀàºÍ×ÊÔ´ÎļþµÄ¼¯ºÏ£¬¾ßÓÐ×ÔÃèÊöµÄÌØµã£¬¶øÇÒÓÐ×Ô¼ºµÄÃû×Ö¡£JPMSÒýÈëÁË¡°module-info.java¡±Îļþ£¬¿ª·¢ÕßÓÃËü¶¨ÒåÄ£¿éµÄ¹«¹²ÆõÔ¼ºÍ¶ÔÆäËûÄ£¿éµÄÒÀÀµ¡£ÎÒÃÇÒ²½«Ê¹ÓÃÕâ¸öÎļþÀ´ÃüÃûÎÒÃǵÄÄ£¿é£¬²¢Ö¸¶¨¶ÔÆäËûÄ£¿éµÄÒÀÀµÒÔ¼°Ä£¿é×ÔÉí±©Â¶³öÀ´µÄ¹«¹²°ü¡£
ÏÂͼÊÇmodule-info.javaÎļþµÄʾÀý´úÂ룺

ÿ¸ö¡°module-info.java¡±Îļþ¶¼ÒԹؼü×Ö¡°module¡±×÷Ϊ¿ªÍ·£¬ºóÃæ¸úÉÏÄ£¿éµÄÃû×Ö¡£ÓÃÔÚ°üÃüÃûÉϵķ´ÏòÓòÃûÃüÃû·½Ê½Ò²¿ÉÒÔÓÃÔÚÄ£¿éµÄÃüÃûÉÏ¡£
´úÂë¿éÖÐÓÐÁ½¸öеĹؼü´Ê¡ª¡ª¡°exports¡±ºÍ¡°requires¡±¡£¡°exports¡±ÓÃÓÚÉùÃ÷ÓɸÃÄ£¿é±©Â¶³öÀ´µÄ¹«¹²°ü£¬Ò²¾ÍÊÇÄ£¿éµÄ¹«¹²API¡£¡°requires¡±ÓÃÓÚÉùÃ÷¶ÔÆäËûÄ£¿éµÄÒÀÀµ¡£
ÄÇô£¬ÎÊÌâÀ´ÁË£¬Èç¹ûÒ»¸öJava 9Ä£¿éµÄÒÀÀµ°ü²¢²»ÊÇÄ£¿é£¬ÄǸÃÔõô°ì£¿Õâ¸öʱºò£¬×Ô¶¯Ä£¿é¾ÍÅÉÉÏÓó¡ÁË¡£
ÕýÈçËüµÄÃû×Ö¸æËßÎÒÃǵÄÄÇÑù£¬·ÇÄ£¿éµÄJAR°ü»á±»×Ô¶¯×ª³ÉÄ£¿é£¬²¢»ùÓÚJAR°üµÄÃû×ÖÀ´Éú³ÉÄ£¿éÃû¡£Ä£¿éÃûµÄÉú³É×ñÑÕâÑùµÄ¹æÔò£ºÒÔJAR°üÎļþ¿ªÍ·£¬È¥µôÀ©Õ¹Ãû£¬ÓõãºÅÌæ´úÁ¬×Ö·û£¬Èç¹ûÓа汾ºÅ¾Í°Ñ°æ±¾ºÅÈ¥µô¡£ÕâÑùµÄ»°£¬¡°vert-core-3.5.0.jar¡±¶ÔÓ¦µÄÄ£¿éÃû¾ÍÊÇ¡°vertx.core¡±¡£²»¹ý£¬ÕâÖÖ·½Ê½²»Ò»¶¨¶¼ÄÜ×àЧ£¬ºóÃæÎÒÃÇ»á¾ÙÒ»¸öÓëNettyÒÀÀµ°üÏà¹ØµÄÀý×Ó¡£
³ýÁ˺ËÐÄÄ£¿é£¬ÎÒÃÇ»¹Òª¶¨ÒåÆäËûһЩģ¿é£¬ÓÃÓÚ·ÃÎÊÊý¾Ý¿â¡¢Óû§ÈÏÖ¤¡¢ÔËÐÐÒýÇæÒÔ¼°ÓëCIϵͳÖÐµÄÆäËû²å¼þ½»»¥¡£
ÔÚ½éÉÜÁËJavaÄ£¿é»¯µÄһЩ¸ÅÄîºó£¬½ÓÏÂÀ´ÈÃÎÒÃÇÀ´ÁÄÁÄVert.x¡£Vert.xÊÇÒ»¸ö¹¤¾ßÌ×¼þ£¬ÌṩÁË·Ç×èÈûµÄAPI£¬Ò²¾ÍÊÇ˵£¬Vert.xÓ¦ÓóÌÐòÖ»ÐèҪʹÓúÜÉÙµÄÏ߳̾ͿÉÒÔ´¦Àí´óÁ¿µÄ²¢·¢ÇëÇó¡£Vert.x²ÉÓÃÁËmulti-reactorģʽÀ´´ïµ½Õâ¸öÄ¿µÄ¡£
ÊìϤJavaScriptµÄ¿ª·¢Õß»òÐí»¹¼ÇµÃµ¥Ïß³ÌʼþÑ»·Ä£ÐÍ£¬multi-reactorģʽÓëÖ®ÀàËÆ£¬Ö»²»¹ýËüʹÓÃÁ˶à¸öÏ̡߳£Vert.x¸ù¾Ý¸ø¶¨·þÎñÆ÷µÄCPUºËÊý´´½¨ÏàÓ¦¸öÊýµÄʼþÑ»·¶ÔÏó¡£
Vert.x»¹ÌṩÁËÁíÒ»ÖÖ»ùÓÚactorµÄ²¢·¢Ä£ÐÍ¡£ÔÚVert.xÉú̬ϵͳÖУ¬actor±»³ÆÎª¡°verticle¡±£¬verticleÖ®¼äͨ¹ýJSONÏûÏ¢½øÐÐͨÐÅ£¬ÕâЩÏûϢͨ¹ýʼþ×ÜÏß½øÐд«ËÍ¡£ÎÒÃÇ»¹¿ÉÒÔÖ¸¶¨²¿Êð¶àÉÙ¸överticleʵÀý¡£
ʼþ×ÜÏß¿ÉÒÔÊÇÒ»¸ö¼¯Èº£¬Ê¹Óü¯Èº¹ÜÀíÆ÷À´¹ÜÀí£¬±ÈÈçHazelcast»òZookeeper¡£ÎÒÃÇ¿ÉÒÔ°ÑÔËÐÐÔÚVert.xʵÀýÉϵÄverticle»òverticle×éºÏ¿´³ÉÊÇ΢·þÎñ¡£mutli-reactorÄ£ÐÍ¡¢verticleºÍʼþ×ÜÏßÈÃVert.xÓ¦ÓóÌÐò¾ß±¸Á˸ßÏìӦʽ¡¢¸ßµ¯ÐÔµÄÌØµã£¬Òò´Ë£¬ÎÒÃÇ¿ÉÒÔ˵Vert.xÓ¦ÓóÌÐòÊÇ·´Ó¦Ê½µÄ¡£
ÏÖÔÚÈÃÎÒÃÇÀ´¿´¿´Õâ¸öCIϵͳµÄÕûÌåÁ÷³Ì£º

ÈçÉÏͼËùʾ£¬Óкü¸¸överticleͨ¹ýVert.xʼþ×ÜÏß½øÐÐͨÐÅ¡£Òª×¢Ò⣬ͼÖеIJå¼þÒ²ÊÇverticle¡£Server verticleÊÇCIϵͳµÄÈë¿Ú£¬¶ÔÍⱩ¶ÁËÒ»¸öREST API£¬ÃüÁîÐлòGUI¿Í»§¶Ë¿ÉÒÔͨ¹ýÕâ¸öAPIÖ¸¶¨´úÂë²Ö¿âµÄÁ¬½ÓµØÖ·¡¢´´½¨ºÍÔËÐй¹½¨¹ÜµÀ¡£
ÏÂÃæµÄ´úÂë¸æËßÎÒÃÇÈçºÎÔÚVert.xÖж¨ÒåAPIºÍ·ÓÉ£º

ÎÒÃÇʹÓÃVert.xµÄWebÀà¿âÀ´¶¨ÒåREST API£¬¶øÇÒËùÓеÄ·ÓɾùÒÔ¡°/api/v1/¡±×÷Ϊǰ׺¡£Vert.x»¹ÌṩÁ˺ܶàÆäËûÀà¿â£¬ÓÃÓÚ¿ìËÙ¿ª·¢·´Ó¦Ê½Ó¦ÓóÌÐò¡£
ÀýÈ磬ÎÒÃÇ¿ÉÒÔʹÓÃWeb APIÀà¿âÀ´Éè¼ÆÒ»¸ö»ùÓÚOpenAPI 3µÄÓ¦ÓóÌÐòAPI£¬Õâ¸öÀà¿â»á°ïÎÒÃÇ´¦ÀíºÃÇëÇóÑéÖ¤ºÍ°²È«ÑéÖ¤ÎÊÌâ¡£Vert.xµÄOAuthÀà¿â¿ÉÓÃÀ´Ìá¸ßÓ¦ÓóÌÐòAPIµÄ°²È«ÐÔ£¬OAuth³§ÉÌ¿ÉÒÔÊǹȸ衢Facebook£¬Ò²¿ÉÒÔ×Ô¶¨Òå¡£
ÔÚÉÏÒ»ÕÅͼƬÖУ¬Engine verticle¸ºÔðе÷¹ÜµÀµÄÖ´ÐС£ÔÚ¿Í»§¶Ëµ÷ÓÃServer verticleÌṩµÄAPIÖ®ºó£¬Server verticleÏòEngine verticle·¢ËÍÏûÏ¢£¬Engine verticleÔÚÊÕµ½ÏûÏ¢Ö®ºó»á³õʼ»¯Ò»¸öеÄflow¶ÔÏó¡£
flow¶ÔÏóʵ¼ÊÉÏÊÇÒ»¸ö¼òµ¥µÄ״̬»ú£¬ÓÃÀ´¸ú×ٹܵÀµÄÖ´ÐÐ״̬¡£ÔÚÈÎÒâʱ¿Ì£¬flow¶ÔÏó¿ÉÄÜ´¦ÓÚÕâÈýÖÖ״̬ÖеÄÒ»ÖÖ£ºsetup¡¢run»òteardown¡£Ëü»á¸ù¾ÝÊäÈëÏûÏ¢À´¸Ä±ä״̬¡£ÔÚ½øÈëÒ»¸öеÄ״̬ʱ£¬flow¶ÔÏó»á´¥·¢Ò»¸öʼþ£¬²¢½«Ê¼þ·¢Ë͵½Ê¼þ×ÜÏß¡£
×¢²áµ½Ê¼þ×ÜÏßÉϲå¼þ»á´¦ÀíÕâЩÏûÏ¢£¬²¢°Ñ´¦Àí½á¹ûͨ¹ýʼþ×ÜÏßÒì²½´«»Ø¡£ÏÂÃæµÄ´úÂëÑÝʾÁËÈçºÎ×¢²áÒ»¸öÏûÏ¢´¦ÀíÆ÷¡¢´´½¨flow¶ÔÏóÒÔ¼°´¦ÀíÁ÷ÈëµÄÏûÏ¢£º

Engine verticleÒ²¸ºÔð¶¨Î»ºÍ²¿ÊðÆäËû²å¼þ»òverticle¡£ÎÒÃÇʹÓÃÁËÔÚJava 6ÖÐÒýÈë²¢ÔÚJava 9ÖиĽø¹ýµÄ·þÎñ¼ÓÔØÆ÷»úÖÆ£¬ÓÃËüÔÚ·þÎñÆ÷Æô¶¯¹ý³ÌÖж¨Î»ºÍ²¿Êð²å¼þ¡£ÎªÁ˸üºÃµØÀí½â·þÎñ¼ÓÔØ»úÖÆ£¬ÓбØÒªÌÖÂÛһϷþÎñºÍ·þÎñÌṩÕß¡£
·þÎñÆäʵ¾ÍÊÇÒ»¸öÒÑÖªµÄ½Ó¿Ú»òÀࣨͨ³£ÊdzéÏóÀࣩ£¬¶ø·þÎñÌṩÕßÔòÊÇ·þÎñµÄ¾ßÌåʵÏÖ¡£ServiceLoaderÀàÓÃÓÚ¼ÓÔØÊµÏÖÁ˸ø¶¨·þÎñµÄ·þÎñÌṩÕß¡£ÎÒÃÇ¿ÉÒÔÔÚÄ£¿éÖÐÉùÃ÷ËüʹÓÃÁËij¸öÌØ¶¨µÄ·þÎñ£¬È»ºóʹÓÃServiceLoaderÀ´¶¨Î»ºÍ¼ÓÔØ²¿ÊðÔÚÔËÐл·¾³ÖеķþÎñÌṩÕß¡£
ÀýÈ磬serverÄ£¿éÉùÃ÷ÁËËüҪʹÓÃPlugin½Ó¿Ú£¬workspaceÄ£¿éÔòÉùÃ÷Ëü½«ÌṩÁ½¸öʵÏÖÁËPlugin½Ó¿ÚµÄ·þÎñ¡£

Òò´Ë£¬serverÄ£¿éÔÚÆô¶¯µÄʱºò£¬Ëü»áµ÷ÓÃServiceLoader£¬ÕÒµ½Á½¸ö²å¼þ£¬È»ºó°ÑËüÃDz¿Êð³Éverticle£º

²å¼þ»áÍê³ÉºÜ¶à¹¤×÷£¬°üÀ¨×¢²áÏûÏ¢´¦ÀíÆ÷£¬ÓÃÓÚ´¦Àí¸ÐÐËȤµÄ¹ÜµÀʼþ¡£ÀýÈ磬workspace²å¼þ¸ºÔðͬ²½Git´úÂ룬¶ø½Å±¾½âÎöÆ÷²å¼þ¸ºÔðɨÃèworkspace£¬ÕÒ³öºÍÖ´ÐйܵÀ½Å±¾Îļþ£¨Ê¹ÓÃJavaScript±àд£©¡£Ö´ÐÐÍê½Å±¾Îļþ»áÉú³ÉһЩshellÃüÁDockerÈÝÆ÷ÖеĽű¾Ö´ÐÐÆ÷²å¼þ»áÖ´ÐÐÕâЩÃüÁî¡£ÒòΪVert.xʹÓÃÁËJavaÄÚÖõÄNashornÒýÇæ£¬ËùÒÔÍêÈ«¿ÉÒÔÔËÐÐJavaScript´úÂë¡£ÒªÖªµÀ£¬Vert.x»¹¿ÉÒÔÖ§³ÖJavaScript¡¢KotlinºÍGroovy¡£
ÏÂÃæÊǹܵÀ½Å±¾ÎļþµÄ²¿·Ö´úÂ룺

ÊÕµ½ÏûÏ¢ºó£¬½Å±¾Ö´ÐÐÆ÷²å¼þ½«»áÏÂÔØDocker¾µÏñ¡¢´´½¨ÈÝÆ÷²¢Ö´ÐÐshellÃüÁî¡£
DockerµÄREST APIͨ³£ÊÇͨ¹ý»ùÓÚunix domain socketµÄHTTPÀ´±©Â¶µÄ£¬²¢·Ç´«Í³µÄ»ùÓÚTCP socketµÄHTTP(S)¡£ÕâÒ²ÊÇVert.xµÃÒÔ·¢»ÓÆä×÷Óõĵط½Ö®Ò»£¬ÎÒÃÇ¿ÉÒÔʹÓÃVert.xµÄÒì²½¿Í»§¶ËÓëDocker½øÐн»»¥£¬¶ø²»ÊÇʹÓÃÆÕͨµÄͬ²½×èÈûʽ·½°¸¡£
Èç¹ûÏîÄ¿Öаüº¬ÁËÓÉNettyÌṩµÄÔÉú´«ÊäÀà¿â£¬Vert.x¾Í»áת¶øÊ¹ÓÃÔÉú´«Êä¡£Èç¹ûÎÒÃÇÔÚ¡°build.gradle¡±ºÍ¡°module-info.java¡±ÎļþÖÐÖ¸¶¨ÁËÀàËÆ¡°netty-transport-native-kqueue¡±ÕâÑùµÄÒÀÀµ£¬¾Í»á·¢ÉúÕâÑùµÄÇé¿ö¡£
»òÐíVert.xÏÂÒ»¸ö°æ±¾»áÖ§³Ö»ùÓÚunix domain socketµÄHTTP¡£Ä¿Ç°£¬ÎÒÃÇ¿ÉÒÔͨ¹ýÐÞ¸ÄVert.xÀà¿âµÄÉÙÁ¿´úÂëÀ´½â¾öÕâ¸öÎÊÌâ¡£ÓëDockerÒýÇæ½»»¥µÄ²å¼þ´úÂë¿´ÆðÀ´ÊÇÕâÑùµÄ£º

¼ÓÈë·ÇÄ£¿éJAR°ü¡°netty-transport-native-kqueue-4.1.15.Final-osx-x86_64.jar¡±×÷ΪÒÀÀµ½«»á×Ô¶¯Éú³ÉÒ»¸öÄ£¿éÃû£¬²»¹ýÒòΪJAR°üº¬ÁËJava¹Ø¼ü×Önative£¬ÎÒÃǵÄÓ¦ÓóÌÐòÎÞ·¨Õý³£±àÒë¡£
Netty½«ÔÚÏÂÒ»¸ö°æ±¾Öнâ¾öÕâ¸öÎÊÌ⣬¶øÔÚÎÊÌâµÃµ½½â¾ö֮ǰ£¬ÎÒÃÇ¿ÉÒÔÔÚJAR°üµÄmanifestÎļþÖмÓÈë¡°Automatic-Module-Name¡±À´ÈƹýÕâ¸öÎÊÌ⡣Ϊ´Ë£¬ÎÒÃÇÐèÒª½âѹJAR°ü£¬Ð޸ġ°MANIFEST.MF¡±Îļþ£¬¼ÓÈë¡°Automatic-Module-Name: io.netty.transport.kqueue¡±£¬È»ºóͨ¹ýÏÂÃæµÄÃüÁîÖØÐ´ò°ü£º

¿ÉÒÔͨ¹ýÏÂÃæµÄÃüÁîÀ´ÑéÖ¤ÔÚmanifestÎļþÖÐÖ¸¶¨µÄ×Ô¶¯Ä£¿éÃûÊÇ·ñ¿ÉÒÔ±»Õýȷʶ±ð£º

ÎÒÃÇ»¹ÒªÊ¹ÓÃÏàͬµÄÃüÁî½â¾öÆäËû·ÇÄ£¿éJAR°üµÄÃüÃûÎÊÌâ¡£
½ÓÏÂÀ´¾Í¿ÉÒÔ¹¹½¨ºÍÔËÐÐÎÒÃǵÄCIϵͳÁË¡£ÏÂÃæÊÇÔËÐÐÓ¦ÓóÌÐòµÄÃüÁ

ΪÁËÖ§³ÖJPMS£¬ÎÒÃÇÔÚ¡°javac¡±ºÍ¡°java¡±ÃüÁîÖÐÔö¼ÓÁËһЩеIJÎÊý£¬ÕâЩ²ÎÊý¸æËßJava±àÒëÆ÷ºÍÔËÐÐʱ£¬Ê¹ÓÃÄ£¿é·¾¶ºÍÄ£¿éJAR°üÀ´Ìæ´úÔÏȵÄÀà·¾¶¡£
һЩֵµÃ×¢ÒâµÄ²ÎÊý£º
¡°-p¡±»ò¡°¡ªmodule-path¡±ÓÃÓÚ¸æËßJavaϵͳÔÚÖ¸¶¨µÄĿ¼ÖвéÕÒJavaÄ£¿é¡£
¡°-m¡±»ò¡°¡ªmodule¡±ÓÃÓÚÖ¸¶¨Ä£¿éºÍÖ÷Àà¡£
ÔÚÕâÆªÎÄÕÂÀÎÒÃÇ»ùÓÚVert.xÉè¼ÆÁËÒ»¸öÄ£¿é»¯µÄ΢·þÎñÓ¦ÓóÌÐò¡£ÎÒÃÇʹÓÃÁËJPMSºÍJDK 9£¬²¢¹¹½¨ÁËÒ»¸öDockerÔÉúµÄCIϵͳ¡£¿ÉÒÔÔÚGitHubÉÏÏÂÔØÏà¹Ø´úÂ룬Á˽âÈçºÎ»ùÓÚVert.xºÍÄ£¿é»¯ÏµÍ³¿ª·¢Ò»¸öСÐ͵Ä×Ô°üº¬Ä£¿é»¯JavaÓ¦ÓóÌÐò¡£
|