- 13.1. éæ±åæ
-
- 13.1.1. 解å³æ¹æ¡
13.2. AutoConfigç设计 -
- 13.2.1. è§è²ä¸èè´£ 13.2.2. å享äºè¿å¶ç®æ æ件 13.2.3. é¨ç½²äºè¿å¶ç®æ æ件 13.2.4. AutoConfigç¹æ§å表
13.3. AutoConfigçä½¿ç¨ ââ å¼åè
æå -
- 13.3.1. 建ç«AutoConfigç®å½ç»æ 13.3.2. 建ç«auto-config.xmlæè¿°æ件 13.3.3. 建ç«æ¨¡æ¿æ件
13.4. AutoConfigçä½¿ç¨ ââ é¨ç½²è
æå -
- 13.4.1. å¨å½ä»¤è¡ä¸ä½¿ç¨AutoConfig 13.4.2. å¨mavenä¸ä½¿ç¨AutoConfig 13.4.3. è¿è¡å¹¶è§å¯AutoConfigçç»æ 13.4.4. å
±äº«propertiesæ件 13.4.5. AutoConfig常ç¨å½ä»¤
13.5. æ¬ç« æ»ç»
13.1. éæ±åæ
å¨ä¸ä¸ªåºç¨ä¸ï¼æ们æ»æ¯ä¼éå°ä¸äºåæ°ï¼ä¾å¦ï¼
- æ°æ®åºæå¡å¨IPå°åã端å£ãç¨æ·åï¼
- ç¨æ¥ä¿åä¸ä¼ èµæçç®å½ã
- ä¸äºåæ°ï¼è¯¸å¦æ¯å¦æå¼cacheãå å¯æç¨çå¯é¥å称ççã
è¿äºåæ°æä¸ä¸ªå ±æ§ï¼é£å°±æ¯ï¼å®ä»¬ååºç¨çé»è¾æ å ³ï¼åªåå½åç¯å¢ãå½åç³»ç»ç¨æ·ç¸å ³ã以ä¸åºæ¯å¾å¸¸è§ï¼
- å¨å¼åãæµè¯ãåå¸é¶æ®µï¼ä½¿ç¨ä¸åçæ°æ®åºæå¡å¨ï¼
- å¨å¼åé¶æ®µï¼ä½¿ç¨WindowsçAå¼åè
å°ç¨æ·ä¸ä¼ çæ件åæ¾å¨
ç®å½ä¸ï¼è使ç¨LinuxçBå¼åè å°åæ ·çæ件åæ¾å¨d:\my_upload
ç®å½ä¸ã/home/myname/my_upload
- å¨å¼åé¶æ®µè®¾ç½®
ï¼å¨ç产ç¯å¢ä¸è®¾ç½®cache=off
ãcache=on
å¾ææ¾ï¼è¿äºåæ°ä¸éå被â硬ç¼ç âå¨é ç½®æ件æ代ç ä¸ãå 为æ¯ä¸ä¸ªä»æºç åºä¸åå¾å®ä»¬ç人ï¼é½æå¯è½éè¦ä¿®æ¹å®ä»¬ï¼ä½¿ä¹ä¸èªå·±çç¯å¢ç¸å¹é ã
13.1.1. 解å³æ¹æ¡
13.1.1.1. è¿è¡æ¶æ¿æ¢çplaceholders
å¾å¤æ¡æ¶æ¯æå¨è¿è¡æ¶å»æ¿æ¢é ç½®æ件ä¸çplaceholderå ä½ç¬¦ãä¾å¦ï¼ Webx/Springå°±æè¿ä¸ªåè½ã
ä¾Â 13.1. å¨Webxä¸å®ä¹placeholders
<services:property-placeholder />
<services:webx-configuration>
<services:productionMode>${productionMode:true}</services:productionMode>
</services:webx-configuration>
å¨ä¸é¢è¿ä¸ªä¾åä¸ï¼ä½ å¯ä»¥å¨å¯å¨åºç¨æ¶ï¼å ä¸JVMåæ°ï¼â
-DproductionMode=false|true
âæ¥åè¯ç³»ç»ç¨åªä¸ç§æ¨¡å¼æ¥å·¥ä½ãå¦æä¸æå®ï¼ååé»è®¤å¼â
true
âã
è¿è¡æ¶æ¿æ¢placeholderæ¯ä¸ç§é常å®ç¨çææ¯ï¼å®æå¦ä¸ä¼ç¼ºç¹ï¼
表 13.1. è¿è¡æ¶æ¿æ¢placeholdersçä¼ç¼ºç¹
ä¼ç¹ | ç¼ºç¹ |
---|---|
|
|
13.1.1.2. ä¸å¿é ç½®æå¡å¨ï¼Config Serverï¼
è¿ä¹æ¯ä¸ç§è¿è¡æ¶ææ¯ãå®å¯ä»¥å¨è¿è¡æ¶å»ï¼å°åºç¨æéçåæ°æ¨éå°åºç¨ä¸ã
å®æå¦ä¸ä¼ç¼ºç¹ï¼
表 13.2. ä¸å¿é ç½®æå¡å¨çä¼ç¼ºç¹
ä¼ç¹ | ç¼ºç¹ |
---|---|
|
|
13.1.1.3. Maven Filteringæºå¶
Mavenæä¾äºä¸ç§è¿æ»¤æºå¶ï¼å¯ä»¥å¨èµæºæ件被å¤å¶å°ç®æ ç®å½çåæ¶ï¼æ¿æ¢å ¶ä¸çplaceholdersã
ä¾Â 13.2. é ç½®Maven Filteringæºå¶
åè®¾ä½ ç项ç®ç®å½ç»æå¦ä¸ï¼
web-project
â pom.xml
â
ââsrc
ââmain
ââjava
ââresources
ââwebapp
ââWEB-INF
web.xml
å¨
pom.xml
ä¸è¿æ ·åï¼
<build>
<filters>
<filter>${user.home}/antx.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**.xml</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>src/main/webapp</directory>
<includes>
<include>WEB-INF/**.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/webapp</directory>
<excludes>
<include>WEB-INF/**.xml</include>
</excludes>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
è¿æ®µpomå®ä¹åè¯mavenï¼
ç¨æå®çpropertiesæä»¶ï¼ ï¼ä¸çå¼ï¼æ¿æ¢æ件ä¸çplaceholdersã | |
è¿æ»¤ ç®å½ä¸çææxmlæ件ï¼æ¿æ¢å
¶ä¸çplaceholdersã | |
è¿æ»¤ ç®å½ä¸çææxmlæ件ï¼æ¿æ¢å
¶ä¸çplaceholdersã |
å¦æä¸è¿°xmlæ件ä¸ï¼å å«â
${xxx.yyy.zzz}
âè¿æ ·çplaceholdersï¼å°è¢«æ¿æ¢æpropertiesæ件ä¸çç¸åºå¼ã
åè¿è¡æ¶æ¿æ¢placeholdersæ¹æ¡ç¸æ¯ï¼Maven Filteringæ¯ä¸ä¸ªbuildæ¶è¿è¡çè¿ç¨ãå®çä¼ç¼ºç¹æ¯ï¼
表 13.3. Maven Filteringæºå¶çä¼ç¼ºç¹
ä¼ç¹ | ç¼ºç¹ |
---|---|
|
|
13.1.1.4. AutoConfigæºå¶
AutoConfigæ¯ä¸ç§ç±»ä¼¼äºMaven Filteringçbuildæ¶å»çå·¥å ·ãè¿æå³ç该æºå¶ä¸åºç¨æéç¨çææ¯ãæ¡æ¶å®å ¨æ å ³ï¼å¯¹åºç¨å®å ¨éæï¼å ·æè¯å¥½çéç¨æ§ãåæ¶ï¼AutoConfigä¸è¿è¡æ¶çé ç½®ææ¯å¹¶ä¸å²çªãå®å¯ä»¥åè¿è¡æ¶æ¿æ¢çplaceholders以åä¸å¿é ç½®æå¡å¨å®ç¾å¹¶åï¼äºä¸ºè¡¥å ã
AutoConfig书åplaceholderçæ¹æ³åMaven Filteringæºå¶å®å ¨ç¸åãæ¢è¨ä¹ï¼Maven Filteringçé ç½®æ件模æ¿ï¼åä¾ä¸ç
/WEB-INF/**.xml
ï¼å¯ä»¥ä¸å ä¿®æ¹å°ç¨å¨AutoConfigä¸ã
ç¶èï¼autoconfigæåå æäºMaven Filteringç主è¦é®é¢ã
表 13.4. Maven FilteringåAutoConfigçæ¯è¾
é®é¢ | Maven Filtering | AutoConfig |
---|---|---|
å¦ä½ä¿®æ¹é ç½®æ件çåæ°ï¼ | Maven Filteringå¿ é¡»è·å¾æºç 并éæ°buildï¼ | èAutoConfigä¸éè¦æåæºç ï¼ä¹ä¸éè¦éæ°buildï¼å³å¯æ¹åç®æ æ件ä¸ææé ç½®æ件ä¸placeholdersçå¼ã |
å¦ä½ç¡®ä¿placeholderæ¿æ¢çæ£ç¡®æ§ï¼ | Maven Filteringä¸è½éªè¯placeholderå¼ç缺失åéè¯¯ï¼ | ä½AutoConfigå¯ä»¥å¯¹placeholderåå ¶å¼è¿è¡æ£æ¥ã |
æ¥ä¸æ¥ï¼æ们å°å°è¯¦ç»ä»ç»AutoConfigç使ç¨æ¹æ³ã
13.2. AutoConfigç设计
å¾å¤äººä¼æAutoConfigçä½Maven Filteringæºå¶çç®åæ¿ä»£åãäºå®ä¸ï¼è¿ä¸¤è ç设计åè¡·æå¾å¤§çåºå«ã
13.2.1. è§è²ä¸èè´£
为äºæäºæ è¯´æ¸ æ¥ï¼æä»¬å¿ é¡»è¦å®ä¹ä¸¤ç§è§è²ï¼å¼åè ï¼Developerï¼åé¨ç½²è ï¼Deployerï¼ã
表 13.5. è§è²åèè´£
è§è²å称 | èè´£ |
---|---|
å¼åè |
|
é¨ç½²è |
|
ä¾å¦ï¼ä¸ä¸ªå® ç©åºï¼petstoreï¼çWEBåºç¨ä¸éè¦æå®ä¸ä¸ªç¨æ¥ä¸ä¼ æ件çç®å½ãäºæ¯ï¼
表 13.6. Petstoreåºç¨ä¸çè§è²åèè´£
å¼åè | é¨ç½²è |
---|---|
å¼åè
å®ä¹äºä¸ä¸ªpropertyï¼ ï¼ éå®æ¡ä»¶ä¸ºï¼âåæ³çæ件系ç»çç®å½åâã | é¨ç½²è
åå¾petstoreçäºè¿å¶åå¸å
ï¼éè¿AutoConfigäºè§£å°ï¼åºç¨éè¦ä¸ä¸ªå为 ç®å½åã é¨ç½²è 便æå®ä¸ä¸ªç®å½ç»petstoreï¼è¯¥ç®å½åçå ·ä½å¼å¯è½å ä¸åçç³»ç»èå¼ã AutoConfigä¼æ£éªè¯¥å¼æ¯å¦ç¬¦åéå®æ¡ä»¶ï¼æ¯å¦ä¸ºåæ³ç®å½åï¼ï¼å¦ææ£éªéè¿ï¼å°±çæé ç½®æ件ï¼å¹¶å°å ¶ä¸ç æ¿æ¢æ该ç®å½åã |
éè¦æ³¨æçæ¯ï¼ä¸ä¸ªâç©ç人âæ对åºçâè§è²âä¸æ¯ä¸æä¸åçãä¾å¦ï¼æâå¼åè âéè¦è¯è¿è¡åºç¨ï¼æ¤æ¶ï¼ä»å°±åæâé¨ç½²è âã
13.2.2. å享äºè¿å¶ç®æ æ件
å设ç°å¨æ两个teamè¦äºç¸åä½ï¼team Açå¼åè å建äºproject Aï¼èteam Bçå¼åè å建äºproject Bãåå®project Bä¾èµäºproject Aãå¦ææ们å©ç¨mavenè¿æ ·çbuildå·¥å ·ï¼é£ä¹ææ¾èæè§çåä½æ¹æ¡æ¯è¿æ ·çï¼
- Team Aåå¸ä¸ä¸ªproject Aççæ¬å°maven repositoryä¸ã
- Team Bä»maven repositoryä¸åå¾project Açäºè¿å¶ç®æ æ件ã
è¿ç§æ¹æ¡æå¾å¤å¥½å¤ï¼
- æ¯ä¸ªteamé½å¯ä»¥ç¬ç«æ§å¶èªå·±åå¸çæ¬çèå¥ï¼
- Teamä¹é´çå ³ç³»è¾æ¾æ£ï¼å¯ä¸çå ³ç³»çº½å¸¦å°±æ¯maven repositoryã
- Teamä¹é´ä¸éè¦å ±äº«æºç ã
ç¶èï¼åå¦project Aä¸æä¸äºé ç½®æ件ä¸çplaceholderséè¦è¢«æ¿æ¢ï¼å¦æ使ç¨Maven Filteringæºå¶ï¼å°±ä¼åºç°é®é¢ãå 为Maven Filteringåªè½å¨project A被buildæ¶æ¿æ¢å ¶ä¸çplaceholdersï¼ä¸æ¦project A被åå¸å°repositoryä¸ï¼team Bç人å°æ æ³ä¿®æ¹ä»»ä½project Aä¸çé ç½®åæ°ãé¤éteam Bç人åå¾project Açæºç ï¼å¹¶éæ°buildãè¿å°å¸¦æ¥å¾å¤§çè´æ ã
AutoConfig解å³äºè¿ä¸ªé®é¢ãå 为å½team Bç人ä»maven repositoryä¸åå¾project Açäºè¿å¶å æ¶ï¼ä»ç¶ææºä¼ä¿®æ¹å ¶é ç½®æ件éçplaceholdersãTeam Bç人çè³ä¸éè¦äºè§£project Aéé ç½®æ件çä»»ä½ç»èï¼AutoConfigä¼èªå¨åç°ææçpropertieså®ä¹ï¼å¹¶æ示ç¼è¾ã
13.2.3. é¨ç½²äºè¿å¶ç®æ æ件
é¨ç½²åºç¨ç人ï¼å³é¨ç½²è ãdeployerï¼ä¹ä»ä¸åçãå 为deployerä¸åéè¦äº²æå»buildæºä»£ç ï¼èæ¯ä»maven repositoryä¸åå¾äºè¿å¶ç®æ æ件å³å¯ã
å¾Â 13.1. å¤å¢éå¤è§è²çåä½
ä»è¿ä¸ªæä¹ä¸è®²ï¼AutoConfigä¸åºå½è¢«çææ¯ä¸ä¸ªbuildæ¶çç®åé ç½®å·¥å ·ï¼èæ¯ä¸ä¸ªâ软件å®è£ å·¥å ·âãå¦åæ们å®è£ ä¸ä¸ªWindows软件 ââ æ们å½ç¶ä¸éè¦ä»æºç å¼å§buildå®ä»¬ï¼èæ¯æ§è¡å ¶å®è£ ç¨åºï¼è®¾å®ä¸äºåæ°è¯¸å¦å®è£ ç®å½ãææ¡£ç®å½ãå¯é项çãå®è£ ç¨åºå°±ä¼èªå¨æ软件设置好ï¼ç¡®ä¿è½¯ä»¶å¯æ£ç¡®è¿è¡äºå½åçWindowsç¯å¢ä¸ã
13.2.4. AutoConfigç¹æ§å表
为äºæ»¡è¶³åé¢æ说çç®çï¼æ们å°AutoConfig设计æä¸é¢çæ ·åï¼
表 13.7. AutoConfig Features
å称 | æè¿° |
---|---|
两ç§ç¨æ³ |
|
对ç®æ æ件èä¸æ¯æºæ件è¿è¡é ç½® |
|
éªè¯åç¼è¾properties |
|
13.3. AutoConfigçä½¿ç¨ ââ å¼åè æå
13.3.1. 建ç«AutoConfigç®å½ç»æ
åMaven Filteringä¸åçæ¯ï¼AutoConfigæ¯é对ç®æ æ件çé ç½®å·¥å ·ãå æ¤AutoConfigå ³å¿çç®å½ç»ææ¯ç®æ æ件çç®å½ç»æãä¸åçbuildå·¥å ·ï¼å建åä¸ç®æ ç®å½ç»ææéè¦çæºæ件çç®å½ç»æä¼åæä¸åãæ¬æä» ä»¥mavenæ åç®å½ç»æ为ä¾ï¼æ¥è¯´ææºæ件çç®å½ç»æç¼æã
13.3.1.1. WARå çç®å½ç»æ
è¿éæ说çwarå ï¼å¯ä»¥æ¯ä¸ä¸ªä»¥zipæ¹å¼æå çæ件ï¼ä¹å¯ä»¥æ¯ä¸ä¸ªå±å¼çç®å½ãä¸é¢ä»¥mavenæ åç®å½ä¸ºä¾ï¼è¯´æ项ç®æºæ件åç®æ æ件çç®å½ç»æç对æ¯ï¼
ä¾Â 13.3. WARå çæºæ件åç®æ æ件ç®å½ç»æ
war-projectï¼æºç®å½ç»æï¼ -> war-project.warï¼ç®æ ç®å½ç»æï¼
â pom.xml
â
ââsrc
ââmain
ââjava
ââresources -> /WEB-INF/classes
â file1.xml file1.xml
â file2.xml file2.xml
â
ââwebapp -> /
ââMETA-INF -> /META-INF
â ââautoconf -> /META-INF/autoconf
â auto-config.xml auto-config.xml
â
ââWEB-INF -> /WEB-INF
web.xml web.xml
file3.xml file3.xml
ç®å½ç¨æ¥åæ¾AutoConfigçæè¿°æ件ï¼ä»¥åå¯éç模æ¿æ件ã | |
æ¯ç¨æ¥æ导AutoConfigè¡ä¸ºçå
³é®æè¿°æ件ã |
å建warå çAutoConfigæºå¶ï¼å ³é®å¨äºå建warç®æ æ件ä¸ç
/META-INF/autoconf/auto-config.xml
æè¿°æ件ã该æè¿°æ件对åºçmaven项ç®æºæ件为ï¼
/src/main/webapp/META-INF/autoconf/auto-config.xml
ã
13.3.1.2. JARå çç®å½ç»æ
è¿éæ说çjarå ï¼å¯ä»¥æ¯ä¸ä¸ªä»¥zipæ¹å¼æå çæ件ï¼ä¹å¯ä»¥æ¯ä¸ä¸ªå±å¼çç®å½ãä¸é¢ä»¥mavenæ åç®å½ä¸ºä¾ï¼è¯´æ项ç®æºæ件åç®æ æ件çç®å½ç»æç对æ¯ï¼
ä¾Â 13.4. JARå çæºæ件åç®æ æ件ç®å½ç»æ
jar-projectï¼æºç®å½ç»æï¼ -> jar-project.jarï¼ç®æ ç®å½ç»æï¼
â pom.xml
â
ââsrc
ââmain
ââjava
ââresources -> /
â file1.xml file1.xml
â file2.xml file2.xml
â
ââMETA-INF -> /META-INF
ââautoconf -> /META-INF/autoconf
auto-config.xml auto-config.xml
ç®å½ç¨æ¥åæ¾AutoConfigçæè¿°æ件ï¼ä»¥åå¯éç模æ¿æ件ã | |
æ¯ç¨æ¥æ导AutoConfigè¡ä¸ºçå
³é®æè¿°æ件ã |
å建jarå çAutoConfigæºå¶ï¼å ³é®å¨äºå建jarç®æ æ件ä¸ç
/META-INF/autoconf/auto-config.xml
æè¿°æ件ã该æè¿°æ件对åºçmaven项ç®æºæ件为ï¼
/src/main/resources/META-INF/autoconf/auto-config.xml
ã
13.3.1.3. æ®éç®å½
AutoConfigä¹æ¯æ对æ®éæ件ç®å½è¿è¡é ç½®ã
ä¾Â 13.5. 对æ®éçç®å½æ§è¡AutoConfig
directory
â file1.xml
â file2.xml
â
ââconf
auto-config.xml
é»è®¤æ
åµä¸ï¼AutoConfigå¨ ç®å½ä¸å¯»æ¾AutoConfigçæè¿°æ件ï¼ä»¥åå¯éç模æ¿æ件ã | |
æ¯ç¨æ¥æ导AutoConfigè¡ä¸ºçå
³é®æè¿°æ件ã |
13.3.2. 建ç«auto-config.xmlæè¿°æ件
AutoConfigç³»ç»çæ ¸å¿å°±æ¯
auto-config.xml
æè¿°æ件ã该æè¿°æ件ä¸å å«ä¸¤é¨åå 容ï¼
- å®ä¹propertiesï¼propertiesçå称ãæè¿°ãé»è®¤å¼ã约ææ¡ä»¶çä¿¡æ¯ï¼
- æå®å å«placeholdersç模æ¿æ件ã
ä¸é¢æ¯
auto-config.xml
æ件çæ ·åï¼ï¼ä»¥petstoreåºç¨ä¸ºä¾ï¼
ä¾Â 13.6. AutoConfigæè¿°æ件示ä¾
<?xml version="1.0" encoding="UTF-8"?>
<config>
<group>
<property name="petstore.work"
description="åºç¨ç¨åºçå·¥ä½ç®å½" />
<property name="petstore.loggingRoot"
defaultValue="${petstore.work}/logs"
description="æ¥å¿æ件ç®å½" />
<property name="petstore.upload"
defaultValue="${petstore.work}/upload"
description="ä¸ä¼ æ件çç®å½" />
<property name="petstore.loggingLevel"
defaultValue="warn"
description="æ¥å¿æ件级å«">
<validator name="choice"
choice="trace, debug, info, warn, error" />
</property>
</group>
<script>
<generate template="WEB-INF/web.xml" />
<generate template="WEB-INF/common/resources.xml" />
</script>
</config>
   | å®ä¹properties |
å®ä¹propertyçéªè¯è§åï¼å¯éï¼ | |
çæé ç½®æ件çæ令ã |
13.3.2.1. å®ä¹properties
å®ä¹ä¸ä¸ªpropertyçå®æ´æ ¼å¼å¦ä¸ï¼
ä¾Â 13.7. å®ä¹ä¸ä¸ªproperty
<property
name="..."
[defaultValue="..."]
[description="..."]
[required="true|false"]
>
<validator name="..." />
<validator name="..." />
...
</property>
å¯ç¨çpropertyåæ°å æ¬ï¼
表 13.8. å®ä¹propertyæ¶å¯ç¨çåæ°
åæ°å | 说æ |
---|---|
| Propertyå称ã |
ï¼å¯éï¼ | é»è®¤å¼ãé»è®¤å¼ä¸å¯å
å«å¯¹å
¶å®propertyçå¼ç¨ï¼å¦ ã |
ï¼å¯éï¼ | 对å段çæè¿°ï¼è¿ä¸ªæè¿°ä¼æ¾ç¤ºç»deployerï¼è¿å¯¹ä»ç解该propertyé常éè¦ã |
ï¼å¯éï¼ | æ¯å¦âå¿
å¡«âï¼é»è®¤ä¸º ãå¦ædeployeræªæä¾å¿
填项çå¼ï¼å°±ä¼æ¥éã |
13.3.2.2. å®ä¹propertyçéªè¯è§å
ç®åï¼æ以ä¸å ç§éªè¯å¨ï¼
表 13.9. å¯ç¨çpropertyéªè¯è§å
éªè¯è§å | 说æ |
---|---|
| Propertyå¼å¿
须为 æ ã |
| Propertyå¼å¿ 须为choiceæå®ä¹çå¼ä¹ä¸ã |
| Propertyå¼å¿ 须为åæ³çemailæ ¼å¼ã |
| Propertyå¼å¿ 须为æ个åå¨çæ件æç®å½ã å¦ææå®äºfileï¼é£å°±æå³çpropertyå¼ææçç®å½ä¸ï¼å¿ é¡»åå¨fileææçæ件æåç®å½ã |
| Propertyå¼å¿ 须为åæ³çIPå°åï¼æè å¯ä»¥è§£æå¾å°çååã |
| Propertyå¼å¿ 须为åæ¯ãæ°åãä¸å线çç»åã |
| Propertyå¼å¿ 须为æ°åçç»åã |
| Propertyå¼å¿ 须符åregexpææçæ£å表达å¼ã å ¶ä¸ï¼mode为å¹é çæ¹æ³ï¼
|
| Propertyå¼å¿ é¡»æ¯åæ³URLã åå¦æå®äº ï¼é£ä¹è¿ä¼æ£æ¥ååæIPçæ£ç¡®æ§ï¼ åå¦æå®äºprotocolsï¼é£ä¹URLçåè®®å¿ é¡»ä¸ºå ¶ä¸ä¹ä¸ï¼ åå¦æå®äº ï¼é£ä¹URLå¿
须以/ç»å°¾ã |
13.3.2.3. çæé ç½®æ件çæ令
æè¿°æ件ä¸ï¼æ¯ä¸ª
<generate>
æ ç¾æå®äºä¸ä¸ªå å«placeholdersçé ç½®æ件模æ¿ï¼å ·ä½æ ¼å¼ä¸ºï¼
ä¾Â 13.8. çæé ç½®æ件çæ令
<generate
template="..."
[destfile="..."]
[charset="..."]
[outputCharset="..."]
>
ä¸é¢æ¯åæ°ç说æï¼
表 13.10. çæé ç½®æ件çæ令åæ°
åæ°å | 说æ |
---|---|
| éè¦é ç½®ç模æ¿åã 模æ¿å为ç¸å¯¹è·¯å¾ï¼ç¸å¯¹äºå½åjar/war/earå çæ ¹ç®å½ã |
ï¼å¯éï¼ | ç®æ æ件ã å¦ä¸æå®ï¼è¡¨ç¤ºç®æ æ件å模æ¿æ件ç¸åã |
ï¼å¯éï¼ | 模æ¿çå符éç¼ç ã XMLæ件ä¸éè¦æå® ï¼å 为AutoConfigå¯ä»¥èªå¨åå¾XMLæ件çå符éç¼ç ï¼ å¯¹å ¶å®æä»¶å¿ é¡»æå®charsetã |
ï¼å¯éï¼ | ç®æ æ件çè¾åºå符éç¼ç ã å¦ä¸æå®ï¼è¡¨ç¤ºå模æ¿charsetç¸åã |
13.3.3. 建ç«æ¨¡æ¿æ件
13.3.3.1. 模æ¿æ件çä½ç½®
å®ä¹å®
auto-config.xml
æè¿°æ件以åï¼å°±å¯ä»¥å建模æ¿äºã模æ¿æ¾å¨åªéå¢ï¼ä¸¾ä¾è¯´æã
ä¾Â 13.9. 模æ¿æ件çä½ç½®
å设å¨ä¸ä¸ªå ¸åçWEBåºç¨ä¸ï¼ä½ ç
auto-config.xml
ä¸å å«æå®äºå¦ä¸æ¨¡æ¿ï¼
<?xml version="1.0" encoding="UTF-8"?>
<config>
<group>
...
</group>
<script>
<generate template="WEB-INF/classes/file1.xml" />
<generate template="WEB-INF/classes/file2.xml" />
<generate template="WEB-INF/file3.xml" />
</script>
</config>
é£ä¹ï¼ä½ å¯ä»¥æ
file1.xml
ã
file2.xml
ã
file3.xml
æ¾å¨ä¸é¢çä½ç½®ï¼
war-projectï¼æºç®å½ç»æï¼ -> war-project.warï¼ç®æ ç®å½ç»æï¼
â pom.xml
â
ââsrc
ââmain
ââjava
ââresources -> /WEB-INF/classes
â file1.xml file1.xml - 建议æ¾å¨è¿é
â file2.xml file2.xml - 建议æ¾å¨è¿é
â
ââwebapp
ââMETA-INF
â ââautoconf
â â auto-config.xml
â â
â ââWEB-INF -> /WEB-INF
â â file3.xml file3.xml - ä¹å¯ä»¥æ¾å¨è¿é
â â
â ââclasses -> /WEB-INF/classes
â file1.xml file1.xml - ä¹å¯ä»¥æ¾å¨è¿é
â file2.xml file2.xml - ä¹å¯ä»¥æ¾å¨è¿é
â
ââWEB-INF -> /WEB-INF
file3.xml file3.xml - 建议æ¾å¨è¿é
AutoConfigç寻æ¾æ¨¡æ¿çé»è¾æ¯ï¼
- å¦æå¨
æå¨çç®å½ä¸åç°æ¨¡æ¿æ件ï¼å°±ä½¿ç¨å®ï¼auto-config.xml
- å¦åå¨å çæ ¹ç®å½ä¸æ¥æ¾æ¨¡æ¿æ件ï¼å¦æ两å¤åæªæ¾å°ï¼åæ¥éã
13.3.3.2. 模æ¿çåæ³
书å模æ¿æ¯å¾ç®åçäºï¼ä½ åªè¦ï¼
- æéè¦é
ç½®çç¹æ¿æ¢æplaceholderï¼â
âãå½ç¶ï¼ä½ å¾ç¡®ä¿property.name被å®ä¹å¨${property.name}
ä¸ãauto-config.xml
- åå¦æ¨¡æ¿ä¸å
å«ä¸å¸æ被æ¿æ¢çè¿è¡æ¶çplaceholderâ
$
âï¼éè¦æ´æ¹æâ{...}
${D}
â ã{...}
ä¾Â 13.10. 模æ¿ç¤ºä¾
...
<context-param>
<param-name>loggingRoot</param-name>
<param-value>${petstore.loggingRoot}</param-value>
</context-param>
<context-param>
<param-name>loggingLevel</param-name>
<param-value>${petstore.loggingLevel}</param-value>
</context-param>
...
${D}{runtime.placeholder}
æ¤å¤ï¼AutoConfig模æ¿å ¶å®æ¯ç±Velocity模æ¿å¼ææ¥æ¸²æçãå æ¤ï¼ææçplaceholderå¿ é¡»è½å¤éè¿velocityçè¯æ³ã
ä¾Â 13.11. 使ç¨ä¸ç¬¦åvelocityè¯æ³çplaceholders
ä¾å¦ï¼ä¸é¢çplaceholder被velocityçä½éæ³ï¼
${my.property.2}
解å³çåæ³æ¯ï¼æ¹åæå¦ä¸æ ·å¼ï¼
${my_property_2}
13.4. AutoConfigçä½¿ç¨ ââ é¨ç½²è æå
é¨ç½²è æ两ç§æ¹æ³å¯ä»¥ä½¿ç¨AutoConfigï¼
- å¨å½ä»¤è¡ä¸ç´æ¥è¿è¡ã
- å¨mavenä¸è°ç¨AutoConfig pluginã
13.4.1. å¨å½ä»¤è¡ä¸ä½¿ç¨AutoConfig
13.4.1.1. åå¾å¯æ§è¡æ件
AutoConfigæä¾äºWindows以åUnix-likeï¼LinuxãMac OSçï¼çå¹³å°ä¸åå¯ä½¿ç¨çnativeå¯æ§è¡ç¨åºãå¯æ§è¡ç¨åºæ件被åå¸å¨Maven repositoryä¸ã
å¦æä½ å·²ç»é 置好äºmavenï¼é£ä¹å¯ä»¥è®©mavenæ¥å¸®ä½ ä¸è½½ç®æ æ件ã
ä¾Â 13.12. 让maven帮å¿ä¸è½½AutoConfigå¯æ§è¡æ件
请å建ä¸ä¸ªä¸´æ¶æ件ï¼
pom.xml
ã
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>com.alibaba.citrus.tool</groupId>
<artifactId>antx-parent</artifactId>
<version>1.2</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>temp</artifactId>
</project>
æ件ä¸çparent pomççæ¬å·ï¼1.2ï¼å³å®äºä½ è¦åå¾çAutoConfigççæ¬å·ã |
ç¶åå¨å½ä»¤è¡ä¸æ§è¡å¦ä¸å½ä»¤ï¼
mvn dependency:copy
è¿æ ·å°±åå¾äºä¸¤ä¸ªæ件ï¼
-
autoconfig-1.2.tgz
-
 - AutoExpandæ¯å¦ä¸ä¸ªå°å·¥å ·ãå®æ¯ç¨æ¥å±å¼warãjarãearå çãå ³äºAutoExpandç详æ ï¼è¯·è§ç¬¬Â 14Â ç« Â AutoExpandå·¥å ·ä½¿ç¨æåãautoexpand-1.2.tgz
ä½ ä¹å¯ä»¥ç´æ¥å»maven repositoryä¸æå·¥ä¸è½½ä»¥ä¸ä¸¤ä¸ªå ï¼
- http://repo1.maven.org/maven2/com/alibaba/citrus/tool/antx-autoconfig/1.2/antx-autoconfig-1.2.tgz
- http://repo1.maven.org/maven2/com/alibaba/citrus/tool/antx-autoexpand/1.2/antx-autoexpand-1.2.tgz
åå¾å缩å 以åï¼å¯ä»¥ç¨ä¸é¢çå½ä»¤æ¥å±å¼å¹¶å®è£ å·¥å ·ã
表 13.11. å±å¼å¹¶å®è£ å·¥å ·
Unix-likeç³»ç» | Windowsç³»ç» |
---|---|
| |
13.4.1.2. æ§è¡AutoConfigå½ä»¤
åå¾å¯æ§è¡æ件以åï¼å°±å¯ä»¥è¯ç¨ä¸ä¸ï¼å¨å½ä»¤è¡ä¸è¾å ¥autoconfigãä¸å¸¦åæ°çautoconfigå½ä»¤ä¼æ¾ç¤ºåºå¦ä¸å¸®å©ä¿¡æ¯ã
ä¾Â 13.13. AutoConfigç帮å©ä¿¡æ¯
$ autoconfig
Detected system charset encoding: UTF-8
If your can't read the following text, specify correct one like this:
autoconfig -c mycharset
使ç¨æ¹æ³ï¼autoconfig [å¯éåæ°] [ç®å½å|å
æ件å]
å¯éåæ°ï¼
-c,--charset è¾å
¥/è¾åºç¼ç å符é
-d,--include-descriptors
å
å«åªäºé
ç½®æè¿°æ件ï¼ä¾å¦ï¼conf/auto-config.xmlï¼å¯ä½¿ç¨*ã**ã?éé
符ï¼å¦æå¤é¡¹ï¼ç¨éå·åé
-D,--exclude-descriptors æé¤åªäºé
ç½®æè¿°æ件ï¼å¯ä½¿ç¨*ã**ã?éé
符ï¼å¦æå¤é¡¹ï¼ç¨éå·åé
-g,--gui å¾å½¢ç¨æ·çé¢ï¼äº¤äºæ¨¡å¼ï¼
-h,--help æ¾ç¤ºå¸®å©ä¿¡æ¯
-i,--interactive 交äºæ¨¡å¼ï¼auto|on|offï¼é»è®¤ä¸ºautoï¼æ åæ°è¡¨ç¤ºon
-I,--non-interactive é交äºæ¨¡å¼ï¼ç¸å½äº--interactive=off
-n,--shared-props-name å
±äº«çå±æ§æ件çå称
-o,--output è¾åºæ件åæç®å½å
-P,--exclude-packages æé¤åªäºæå
æ件ï¼å¯ä½¿ç¨*ã**ã?éé
符ï¼å¦æå¤é¡¹ï¼ç¨éå·åé
-p,--include-packages
å
å«åªäºæå
æ件ï¼ä¾å¦ï¼target/*.warï¼å¯ä½¿ç¨*ã**ã?éé
符ï¼å¦æå¤é¡¹ï¼ç¨éå·åé
-s,--shared-props å
±äº«çå±æ§æ件URLå表ï¼ä»¥éå·åé
-T,--type æ件类åï¼ä¾å¦ï¼war, jar, earç
-t,--text ææ¬ç¨æ·çé¢ï¼äº¤äºæ¨¡å¼ï¼
-u,--userprop ç¨æ·å±æ§æ件
-v,--verbose æ¾ç¤ºæ´å¤ä¿¡æ¯
æ»èè´¹æ¶é´ï¼546毫ç§
æç®åçAutoConfigå½ä»¤å¦ä¸ï¼
ä¾Â 13.14. æç®åçAutoConfigå½ä»¤
autoconfig petstore.war
æ 论
petstore.war
æ¯ä¸ä¸ªzipå è¿æ¯ç®å½ï¼AutoConfigé½ä¼æ£ç¡®å°çæå ¶ä¸çé ç½®æ件ã
13.4.2. å¨mavenä¸ä½¿ç¨AutoConfig
AutoConfigä¹å¯ä»¥éè¿maven pluginæ¥æ§è¡ã
è¿ç§æ¹å¼ä½¿ç¨æ¹å¼ï¼æ¹ä¾¿äºå¼åè è¯è¿è¡å¹¶æµè¯åºç¨ç¨åºãå¼åè å¯ä»¥å¨build项ç®çåæ¶ï¼æAutoConfigä¹é 置好ãç¶è对äºéå¼åçåºç¨æµè¯äººåãåå¸åºç¨çç³»ç»ç®¡çåæ¥è¯´ï¼æ好çæ¹æ³æ¯ä½¿ç¨ç¬ç«å¯æ§è¡çAutoConfigæ¥é ç½®åºç¨çäºè¿å¶ç®æ æ件ã
为äºä½¿ç¨mavenæ件ï¼ä½ éè¦ä¿®æ¹é¡¹ç®ç
pom.xml
æ¥è®¾å®å®ã请注æï¼ä¸è¬æ¥è¯´ï¼ä¸è¦å¨parentÂ
pom.xml
ä¸è®¾å®AutoConfigï¼å 为è¿ä¸ªè®¾ç½®ä¼ä½ç¨å¨æ¯ä¸ªå项ç®ä¸ï¼å¯¼è´ä¸å¿ è¦çAutoConfigæ§è¡ãåªå¨çææç»ç®æ æ件çå项ç®
pom.xml
ä¸è®¾å®AutoConfigå°±å¯ä»¥äºãä¾å¦ï¼å¯¹äºä¸ä¸ªweb项ç®ï¼ä½ å¯ä»¥å¨çæwarå çå项ç®ä¸è®¾ç½®AutoConfig pluginã
ä¾Â 13.15. å¨pom.xmlä¸è®¾å®AutoConfig plugin
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
...
<properties>
...
<!-- å®ä¹autoconfigççæ¬ï¼å»ºè®®å°æ¤è¡åå¨parent pom.xmlä¸ã -->
<autoconfig-plugin-version>1.2</autoconfig-plugin-version>
</properties>
...
<build>
<plugins>
<plugin>
<groupId>com.alibaba.citrus.tool</groupId>
<artifactId>autoconfig-maven-plugin</artifactId>
<version>${autoconfig-plugin-version}</version>
<configuration>
<!-- è¦è¿è¡AutoConfigçç®æ æ件ï¼é»è®¤ä¸º${project.artifact.file}ã
<dest>${project.artifact.file}</dest>
-->
<!-- é
ç½®åï¼æ¯å¦å±å¼ç®æ æ件ï¼é»è®¤ä¸ºfalseï¼ä¸å±å¼ã
<exploding>true</exploding>
-->
<!-- å±å¼å°æå®ç®å½ï¼é»è®¤ä¸º${project.build.directory}/${project.build.finalName}ã
<explodedDirectory>
${project.build.directory}/${project.build.finalName}
</explodedDirectory>
-->
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>autoconfig</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
è¿æ ·ï¼æ¯æ¬¡æ§è¡
mvn package
æè
mvn install
æ¶ï¼é½ä¼æ¿æ´»AutoConfigï¼å¯¹packageç®æ æ件è¿è¡é ç½®ã
æ³è¦é¿å AutoConfigï¼åªéè¦ä¸ä¸ªé¢å¤çå½ä»¤è¡åæ°ï¼
ä¾Â 13.16. é¿å æ§è¡AutoConfig
mvn install âDautoconfig.skip
13.4.3. è¿è¡å¹¶è§å¯AutoConfigçç»æ
第ä¸æ¬¡æ§è¡AutoConfigï¼æ 论éè¿ä½ç§æ¹å¼ï¼ç¬ç«å½ä»¤è¡æmavenæ件ï¼ï¼AutoConfigé½ä¼æç¤ºä½ ä¿®æ¹user propertiesæ件ï¼ä»¥æä¾æéè¦çpropertieså¼ãAutoConfigæä¾äºä¸å¥åºäºææ¬ç交äºå¼çé¢æ¥ç¼è¾è¿äºpropertiesã
ä¾Â 13.17. 交äºå¼ç¼è¾properties
ââââââââââââââââââââââââââââ
â
â æ¨çé
ç½®æ件éè¦è¢«æ´æ°ï¼
â
â file:/.../antx.properties
â
â è¿ä¸ªæ件å
æ¬äºæ¨ä¸ªäººçç¹æ®è®¾ç½®ï¼
â å
æ¬æå¡å¨ç«¯å£ãæ¨çé®ä»¶å°åçå
容ã
â
âââââââââââââââââââ
å¦æä¸æ´æ°æ¤æ件ï¼å¯è½ä¼å¯¼è´é
ç½®æ件çå
容ä¸å®æ´ã
æ¨éè¦ç°å¨æ´æ°æ¤æ件å? [Yes][No] y
å½ä½ éè¿äº¤äºå¼çé¢å¡«åäºææpropertiesçå¼ï¼å¹¶éè¿äºAutoConfigçéªè¯ä»¥åï¼AutoConfigå°±å¼å§çæé ç½®æ件ï¼
å³å°ä¿åå°æ件"file:/.../antx.properties"ä¸, ç¡®å®? [Yes][No] y
ââââââââââââââââââââââââââââ
â ä¿åæ件 file:/.../antx.properties...
ââââââââââââââââââââââââââââââ
âpetstore.loggingLevel = warn
âpetstore.loggingRoot = ${petstore.work}/logs
âpetstore.upload = ${petstore.work}/upload
âpetstore.work = /tmp
âââââââââââââââââââ
å·²ä¿åè³æ件: file:/.../antx.properties
Loading file:/.../antx.properties
<jar:file:/.../Work/my/apps/petstore-webx3/target/petstore.war!/>
Generating WEB-INF/web.xml [UTF-8] => WEB-INF/web.xml [UTF-8]
<jar:file:/.../Work/my/apps/petstore-webx3/target/petstore.war!/>
Generating WEB-INF/common/resources.xml [UTF-8] => WEB-INF/common/resources.xml [UTF-8]
<jar:file:/.../Work/my/apps/petstore-webx3/target/petstore.war!/>
Generating log file: META-INF/autoconf/auto-config.xml.log
Expanding: /.../Work/my/apps/petstore-webx3/target/petstore.war
To: /.../Work/my/apps/petstore-webx3/target/petstore
done.
åå¦åç°æ¨¡æ¿ä¸æ个placeholderï¼å¹¶æªå¨
auto-config.xml
ä¸å®ä¹ï¼å°±ä¼åºç°ä»¥ä¸é误ï¼
ERROR - Undefined placeholders found in template:
- Template: META-INF/autoconf/WEB-INF/web.xml
- Descriptor: META-INF/autoconf/auto-config.xml
- Base URL: file:/.../Work/my/apps/petstore-webx3/target/petstore/
---------------------------------------------------------------
-> petstore.loggingRoot
---------------------------------------------------------------
åºç°é误以åï¼Mavenä¼æ¥éï¼å¹¶åæ¢buildè¿ç¨ãåå¦ä½ ä¸å¸æmavenåæ¢ï¼å¯ä»¥ç¨ä¸é¢çå½ä»¤æ¥æ§è¡mavenï¼
ä¾Â 13.18. é¿å mavenå 为placeholderæªå®ä¹èåæ¢
mvn ... âDautoconfig.strict=false
AutoConfigä¼çæä¸ä¸ªæ¥å¿æ件ï¼å°±å¨
auto-config.xml
æå¨çç®å½ä¸ï¼åå为ï¼
auto-config.xml.log
ã
ä¾Â 13.19. AutoConfigæçæçæ¥å¿æ件
Last Configured at: Fri Jun 18 13:54:22 CST 2010
Base URL: file:/.../Work/my/apps/petstore-webx3/target/petstore/
Descriptor: META-INF/autoconf/auto-config.xml
Generating META-INF/autoconf/WEB-INF/web.xml [UTF-8] => WEB-INF/web.xml [UTF-8]
Generating META-INF/autoconf/WEB-INF/common/resources.xml [UTF-8] => WEB-INF/common/resources.xml [UTF-8]
æåï¼è®©æ们æ¥çä¸ä¸AutoConfigæçæçæ件ï¼å ¶ä¸ææçplaceholdersåºå½è¢«æ¿æ¢æä½ ææä¾çå¼äºã
ä¾Â 13.20. AutoConfigçæçç»æ
...
<context-param>
<param-name>loggingRoot</param-name>
<param-value>/tmp/logs</param-value>
</context-param>
<context-param>
<param-name>loggingLevel</param-name>
<param-value>warn</param-value>
</context-param>
...
${runtime.placeholder}
13.4.4.Â å ±äº«propertiesæ件
å½éè¦é ç½®çå 容è¶æ¥è¶å¤æ¶ï¼å³ä½¿ä½¿ç¨AutoConfigè¿æ ·çæºå¶ï¼ä¹ä¼åå¾ä¸èå ¶ç¦ã
åå¦ä½ ç项ç®å å«äºå¥½å 个模åï¼èä½ åªè´è´£å ¶ä¸çä¸ä¸ªæ¨¡åãä¸è¬æ¥è¯´ï¼ä½ å¯¹å ¶å®æ¨¡åçé ç½®æ¯ä»ä¹å¹¶ä¸æ¸ æ¥ï¼äºå®ä¸ä½ ä¹æå¾å»å ³å¿ãä½æ¯ä½ 为äºè¿è¡è¿ä¸ªé¡¹ç®ï¼ä½ ä¸å¾ä¸å»é ç½®è¿äºæ¨¡åãåå¦æ¨¡åAå°±æ¯ä¸ä¸ªä½ ä¸æ³å ³å¿ç模åï¼ä½ä¸ºäºè¿è¡å®ï¼ä½ éè¦åè¯æ¨¡åAä¸äºåæ°ï¼æ°æ®åºè¿æ¥çåæ°ãååã端å£ãæ件ç®å½ãæç´¢å¼æâ¦â¦å¯ä½ 并ä¸æ¸ æ¥è¿äºåæ°åºè¯¥åä»ä¹å¼ã
好å¨AutoConfigæä¾äºä¸ä¸ªå ±äº«propertiesæ件çæ¹æ³ã
13.4.4.1.Â å ±äº«çpropertiesæ件
ä½ å¯ä»¥å建ä¸ç³»åæ件ï¼
module-a-db.properites
ï¼
module-a-searchengine.properties
ççãæ¯ä¸ªæ件ä¸é½å å«äºæ个è¿è¡ç¯å¢ä¸çå ³äºmodule A模åçé ç½®åæ°ã
ç°å¨ï¼ä½ å¯ä»¥ä¸å ³å¿module Aäºï¼ä½ åªè¦ä½¿ç¨ä¸é¢çå½ä»¤ï¼
ä¾Â 13.21. æå®å ±äº«çpropertiesæ件
autoconfig -s module-a-db.properties,module-a-searchengine.properties
â¦â¦
åæ°ä»£è¡¨âå
±äº«çpropertiesæ件âã |
åæ¶ï¼ä½ ç
antx.properties
ä¹è¢«ç®åäºï¼å 为è¿éåªä¼ä¿åä½ å®ä¹çé 置项ï¼èä¸ä¼å å«å ±äº«çé 置项ã
13.4.4.2.Â å ±äº«æ´ä¸ªç®å½
åå¦å ±äº«çæ件å¾å¤çè¯ï¼AutoConfigè¿æä¸ä¸ªè´´å¿çåè½ï¼ä½ å¯ä»¥æè¿äºæ件æç®å½æ¥ç»ç»ï¼
ä¾Â 13.22. æç®å½ç»ç»è¦è¢«å ±äº«çpropertiesæ件
shared-properties/
ââtest/ // æµè¯ç¯å¢çå
±äº«é
ç½®
â module-a-db.properties
â module-a-searchengine.properties
â module-b.properties
ââprod/ // ç产ç¯å¢çå
±äº«é
ç½®
module-a-db.properties
module-a-searchengine.properties
module-b.properties
ç¶åï¼ä½ å¯ä»¥ç´æ¥å¨AutoConfigä¸å¼ç¨ç®å½ï¼
ä¾Â 13.23.Â å ±äº«æå®ç®å½ä¸çææpropertiesæ件
autoconfig -s shared-propertes/test/ â¦â¦
AutoConfigå°±ä¼ä¸ºä½ è£ è½½è¿ä¸ªç®å½ä¸çææå ±äº«é ç½®æ件ãï¼æ³¨æï¼ç®å½å¿ 须以ææ â/âç»å°¾ï¼
13.4.4.3. å°å ±äº«ç®å½æ¾å¨httpãhttpsæsshæå¡å¨ä¸
AutoConfigè¿æ¯æä»httpãhttpsæsshæå¡å¨ä¸åå¾å ±äº«é ç½®æ件ï¼åªéè¦å°åé¢ä¾åä¸çæ件åæ¹æhttpæsshçURIå°±å¯ä»¥äºï¼
ä¾Â 13.24.Â å ±äº«è¿ç¨æå¡å¨ä¸çpropertiesæ件æç®å½
autoconfig -s http://share.alibaba.com/shared-propertes/test/
â¦â¦
autoconfig -s http://[email protected]/shared-propertes/test/
â¦â¦
autoconfig -s https://share.alibaba.com/shared-propertes/test/
â¦â¦
autoconfig -s https://[email protected]om/shared-propertes/test/
â¦â¦
autoconfig -s ssh://[email protected]/shared-propertes/test/
â¦â¦
å ±äº«è¿ç¨httpæå¡å¨ä¸çpropertiesæ件ã | |
å ±äº«è¿ç¨httpæå¡å¨ä¸çpropertiesæ件ï¼æå®ç»å½ç¨æ·åã | |
å ±äº«è¿ç¨httpsæå¡å¨ä¸çpropertiesæ件ã | |
å ±äº«è¿ç¨httpsæå¡å¨ä¸çpropertiesæ件ï¼æå®ç»å½ç¨æ·åã | |
å ±äº«è¿ç¨sshæå¡å¨ä¸çpropertiesæ件ï¼å¿ é¡»æå®ç¨æ·åã |
ç±äºSubversionãGitæå¡å¨æ¯æ¯æHTTP/HTTPSåè®®çï¼å æ¤å°propertiesæ件åæ¾å¨SubversionæGitæå¡å¨ä¸ï¼ä¹æ¯ä¸ä¸ªæ好çåæ³ãç±äºéç¨äºSubversionæGitï¼propertiesæ件ççæ¬ç®¡çé®é¢ä¹è¢«ä¸ä¸¾è§£å³äºã
éè¦æ³¨æçæ¯ï¼è®¿é®httpåsshæå¯è½éè¦éªè¯ç¨æ·åå¯ç ãå½éè¦éªè¯æ¶ï¼AutoConfigä¼æç¤ºä½ è¾å ¥ç¨æ·ååå¯ç ãè¾å ¥ä»¥åï¼å¯ç å°è¢«ä¿åå¨
$HOME/passwd.autoconfig
æ件ä¸ï¼ä»¥åå°±ä¸éè¦éå¤æé®äºã
13.4.4.4. å¨å¤ç§é 置项ä¸åæ¢
å½ä½ 使ç¨åææè¿°ç
autoconfig âs
å½ä»¤æ¥çæ
antx.properties
æ件æ¶ï¼ä½ ä¼åç°
antx.properties
ä¸å¢å äºå è¡ç¹å«çå 容ï¼
ä¾Â 13.25. å å«å ±äº«æ件ãç®å½ä¿¡æ¯ç
antx.properties
æ件
antx.properties.default = http://share.alibaba.com/shared-propertes/test/
å¦æä½ å¨
-s
åæ°ä¸æå®äºå¤é¡¹å ±äº«propertiesæ件æç®å½ï¼é£ä¹
antx.properties
ä¸å°ä¼è¿æ ·ï¼
antx.properties.default.1 = http://share.alibaba.com/shared-propertes/test/
antx.properties.default.2 = file:/shared-properties/test/my-1.properites
antx.properties.default.3 = file:/shared-properties/test/my-2.properites
äºå®ä¸ï¼AutoConfigè¿æ¯æå¤ç»å ±äº«é ç½®ï¼è¯·è¯ç¨ä¸é¢çå½ä»¤ï¼
ä¾Â 13.26. 使ç¨å¤ç»å ±äº«é ç½®
autoconfig -s http://share.alibaba.com/shared-propertes/test/ -n test
â¦â¦
为å½åå ±äº«é ç½®å®ä¹ä¸ä¸ªååï¼ä»¥åå¯ä»¥ç¨è¿ä¸ªååæ¥ç®åå½ä»¤ã |
è¿æ¶ï¼antx.propertieså°±ä¼æ¯è¿ä¸ªæ ·åï¼
antx.properties = test
antx.properties.test = http://share.alibaba.com/shared-propertes/test/
åæ§è¡ï¼
autoconfig -s http://share.alibaba.com/shared-propertes/prod/ -n prod â¦â¦
antx.propertieså°±ä¼åæè¿ä¸ªæ ·åï¼
antx.properties = prod
antx.properties.test = http://share.alibaba.com/shared-propertes/test/
antx.properties.prod = http://share.alibaba.com/shared-propertes/prod/
以ååæ§è¡ï¼å°±ä¸éè¦åæå®
-s
åæ°äºï¼åªéç¨
-n
åæ°éæ©ä¸ç»å ±äº«propertiesæ件å³å¯ãä¾å¦ï¼
autoconfig -n prod
â¦â¦ // 使ç¨prodç产ç¯å¢çåæ°
autoconfig -n test
â¦â¦ // 使ç¨testæµè¯ç¯å¢çåæ°
autoconfig
â¦â¦ // ä¸æå®ï¼å使ç¨æè¿ä¸æ¬¡æéæ©çå
±äº«æ件
13.4.5. AutoConfig常ç¨å½ä»¤
ä¸é¢ç½åäºAutoConfigç常ç¨çå½ä»¤ååæ°ï¼
13.4.5.1. æå®äº¤äºå¼çé¢çcharset
ä¸è¬ä¸éè¦ç¹å«æå®charsetï¼é¤éAutoConfigèªå¨è¯å«ç³»ç»ç¼ç åºéï¼å¯¼è´æ¾ç¤ºä¹±ç ã
è¿è¡AutoConfigç¬ç«å¯æ§è¡ç¨åº | |
è¿è¡AutoConfig mavenæ件 | |
13.4.5.2. æå®äº¤äºæ¨¡å¼
é»è®¤æ åµä¸ï¼äº¤äºæ¨¡å¼ä¸ºèªå¨ï¼autoï¼ãä» å½user propertiesä¸çå¼ä¸æ»¡è¶³auto-config.xmlä¸çå®ä¹æ¶ï¼æä¼äº¤äºå¼å°å¼å¯¼ç¨æ·æä¾propertieså¼ã
ä½ä½ å¯ä»¥å¼ºå¶æå¼äº¤äºæ¨¡å¼ï¼
è¿è¡AutoConfigç¬ç«å¯æ§è¡ç¨åº | |
è¿è¡AutoConfig mavenæ件 | |
æ强å¶å ³é交äºæ¨¡å¼ï¼
è¿è¡AutoConfigç¬ç«å¯æ§è¡ç¨åº | |
è¿è¡AutoConfig mavenæ件 | |
13.4.5.3. æå®user properties
é»è®¤æ åµä¸ï¼AutoConfigä¼æä¸å顺åºæ¥æ¾user propertiesï¼
-
å½åç®å½/antx.properties
-
å½åç¨æ·HOMEç®å½/antx.properties
ä½ä½ å¯ä»¥æå®ä¸ä¸ªèªå·±çpropertiesæ件ï¼ç¨ä¸é¢çå½ä»¤ï¼
è¿è¡AutoConfigç¬ç«å¯æ§è¡ç¨åº | |
è¿è¡AutoConfig mavenæ件 | |
13.4.5.4. æ¾ç¤ºè¯¦ç»çä¿¡æ¯
é»è®¤æ åµä¸ï¼AutoConfigåªè¾åºéè¦çä¿¡æ¯ï¼ä½ææ¶ä½ æ³äºè§£æ´å¤å é¨çæ åµï¼åªéè¦ç¨ä¸é¢çå½ä»¤ï¼
è¿è¡AutoConfigç¬ç«å¯æ§è¡ç¨åº | |
è¿è¡AutoConfig mavenæ件 | ä¸éç¨ |
13.4.5.5. æå®è¾åºæ件
é»è®¤æ åµä¸ï¼AutoConfigæçæçé ç½®æ件以åæ¥å¿ä¿¡æ¯ä¼ç´æ¥è¾åºå°å½åå æ件æç®å½ä¸ãä¾å¦ä»¥ä¸å½ä»¤ä¼æ¹å
petstore.war
çå 容ï¼
autoconfig petstore.war
ä½ä½ å¯ä»¥æå®å¦ä¸ä¸ªè¾åºæ件æç®å½ï¼è¿æ ·ï¼åæ¥çæ件æç®å½å°±ä¸ä¼è¢«ä¿®æ¹ï¼
è¿è¡AutoConfigç¬ç«å¯æ§è¡ç¨åº | |
è¿è¡AutoConfig mavenæ件 | ä¸éç¨ |
13.4.5.6. é¿å æ§è¡AutoConfig
å°AutoConfigåmaven package phaseç»å®ä»¥åï¼æ¯æ¬¡buildé½ä¼æ¿æ´»AutoConfigãåå¦ä½ æ³è·³è¿è¿ä¸æ¥ï¼åªéè¦ä¸é¢çå½ä»¤ï¼
è¿è¡AutoConfigç¬ç«å¯æ§è¡ç¨åº | ä¸éç¨ |
è¿è¡AutoConfig mavenæ件 | |
13.4.5.7. é¿å ä¸æmaven build
é»è®¤æ åµä¸ï¼åå¦åç°ææªå®ä¹çplaceholdersï¼AutoConfigä¼æ¥é并ä¸æ¢mavençæ§è¡ãåå¦ä½ ä¸æ³ä¸æmaven buildï¼å¯ä»¥è¿æ ·åï¼
è¿è¡AutoConfigç¬ç«å¯æ§è¡ç¨åº | ä¸éç¨ |
è¿è¡AutoConfig mavenæ件 | |
13.5. æ¬ç« æ»ç»
AutoConfigæ¯ä¸ä¸ªç®åèæç¨çå°å·¥å ·ï¼å¼¥è¡¥äºMaven Filteringå类似æºå¶çä¸è¶³ãä½å®è¿æä¸å°æ¹è¿çä½å°ã
- çé¢ä¸å¤ç´è§ãå¦æè½å¤éè¿GUIæWEBçé¢æ¥é ç½®ï¼å°±æ´å¥½äºã
- Properties validatorç®åä¸ææ©å±ã
- 缺å°éæç¯å¢çæ¯æã