maven---13使用maven構(gòu)建Web應(yīng)用

1.簡(jiǎn)介

之前的maven項(xiàng)目打包類(lèi)型都為pom或者POM,今天講一下用maven構(gòu)建web應(yīng)用,web應(yīng)用的打包類(lèi)型為war。

2.Web項(xiàng)目的目錄結(jié)構(gòu)

  • java的web應(yīng)用施无,其標(biāo)準(zhǔn)打包方式是war巢寡, war和jar類(lèi)似风纠,只不過(guò)它包含更多內(nèi)容淆院,如jsp文件、servlet文件昔搂、java類(lèi)玲销、web.xml配置,依賴(lài)包摘符、靜態(tài)web資源(html css js文件)等贤斜。

war文件目錄結(jié)構(gòu)如下:

war文件目錄結(jié)構(gòu)

jar文件目錄結(jié)構(gòu)如下:

-jar/
  +META-INF/
  +packagename
  |+ java.class
  |+ ...
  • 一個(gè)WAR包至少包含兩個(gè)子目錄:META-INF和WEB-INF。
    • META-INF:包含一些打包元數(shù)據(jù)逛裤,打包時(shí)會(huì)涉及到瘩绒。
    • WEB-INF:必須包含web資源描述文件web.xml。classes包含所有該web項(xiàng)目的類(lèi)带族,而lib則包含所有web項(xiàng)目依賴(lài)的JAR包锁荔,classes和lib目錄都會(huì)在運(yùn)行的時(shí)候被加入到Classpath中
  • war包中的還包含了其他web資源炉菲,如html或者jsp堕战,js坤溃,css等拍霜。

2.1Maven對(duì)web項(xiàng)目的布局約定

  • maven對(duì)不同類(lèi)型項(xiàng)目的布局結(jié)構(gòu)要求不一樣嘱丢,對(duì)于web項(xiàng)目有一個(gè)通用的約定,不過(guò)用戶(hù)必須顯示制定web項(xiàng)目的打包類(lèi)型為war才會(huì)按照正確的方式打包web項(xiàng)目祠饺。
  • web項(xiàng)目的類(lèi)及資源文件同一般的JAR項(xiàng)目一樣越驻,默認(rèn)位置:src/main/java和src/main/resources。測(cè)試及測(cè)試資源文件默認(rèn)位置:src/test/java和src/test/resources道偷。Web項(xiàng)目比較特殊的地方在于:他有一個(gè)web資源目錄缀旁,默認(rèn)位置:src/main/webapp/
web項(xiàng)目的maven目錄結(jié)構(gòu)
eclipse中maven結(jié)構(gòu)的web項(xiàng)目
項(xiàng)目打包配置
  • 在src/main/webapp目錄下除了html、jsp勺鸦、css等必須包含子目錄WEB-INF,且子目錄必須包含web.xml文件并巍。
  • 在使用Maven創(chuàng)建Web項(xiàng)目之前必須理解Maven結(jié)構(gòu)和WAR包結(jié)構(gòu)的對(duì)應(yīng)關(guān)系.
  • 注意:WAR包中有一個(gè)lib目錄包含所有依賴(lài)JAR包,但Maven項(xiàng)目結(jié)構(gòu)中沒(méi)有這樣一個(gè)目錄换途,這是因?yàn)橐蕾?lài)都配置在POM中懊渡,Maven在使用WAR方式打包的時(shí)候會(huì)根據(jù)POM的配置從本地倉(cāng)庫(kù)復(fù)制相應(yīng)的JAR文件畦幢。
  • 而對(duì)于JAR方式打包的時(shí)候不會(huì)把依賴(lài)打包進(jìn)去词顾,但是會(huì)在META-INF文件中包含pom.xml文件信息用于表明該jar包的依賴(lài)情況。maven---3手寫(xiě)一個(gè)helloWord----》6.補(bǔ)充:Maven打包的JAR文件目錄內(nèi)容

3.編寫(xiě)web項(xiàng)目

4.使用jetty-maven-plugin進(jìn)行測(cè)試

4.1需求背景

  • 進(jìn)行web開(kāi)發(fā)時(shí)需要測(cè)試雅任,而測(cè)試內(nèi)容可以分為和頁(yè)面相關(guān)和頁(yè)面無(wú)關(guān)的測(cè)試懈息。
    • 和頁(yè)面無(wú)關(guān)的測(cè)試有:數(shù)據(jù)訪問(wèn)肾档,業(yè)務(wù)邏輯等,這一類(lèi)測(cè)試使用單元測(cè)試(junit或testNG就可以完成)辫继。這一類(lèi)測(cè)試不要通過(guò)瀏覽器來(lái)測(cè)試了怒见,也不要濫用下面的方法來(lái)測(cè)試這些內(nèi)容。
    • 和頁(yè)面有關(guān)的:如驗(yàn)證程序功能姑宽、驗(yàn)證頁(yè)面布局遣耍、jsp、js低千、css修改等與頁(yè)面相關(guān)的特性配阵,都需要手動(dòng)部署到web容器在打開(kāi)瀏覽器進(jìn)行測(cè)試。而傳統(tǒng)的web頁(yè)面測(cè)試需要手動(dòng)編譯示血、測(cè)試棋傍、打包及部署,往往消耗10幾秒甚至更長(zhǎng)难审。(jetty-maven-plugin要解決的事)
  • jetty-maven-plugin能夠幫助我們節(jié)省時(shí)間瘫拣,它會(huì)周期性地檢查項(xiàng)目?jī)?nèi)容,發(fā)現(xiàn)項(xiàng)目變更后(包括src中webapp中內(nèi)容)自動(dòng)更新到內(nèi)置的jetty Web容器中告喊。然后就可以直接測(cè)試web頁(yè)面了麸拄。
  • 注意:jetty-maven-plugin主要通過(guò)將項(xiàng)目自動(dòng)部署到j(luò)etty中從而方便測(cè)試派昧,所以在生產(chǎn)環(huán)境中不應(yīng)該使用該方式,因?yàn)樯森h(huán)境中我們的項(xiàng)目有可能部署到其它web容器中tomcat拢切、jboss,jetty等蒂萎,所以它主要用來(lái)幫助日常快速開(kāi)發(fā)和測(cè)試

4.2實(shí)踐

4.2.1配置插件

使用org.eclipse.jetty淮椰,該插件要求maven3.3+級(jí)以上版本五慈。org.eclipse.jetty

  • pom.xml配置
    <plugin>
               <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.3.14.v20161028</version>
                <configuration>
                  <scanIntervalSeconds>10</scanIntervalSeconds>
                  <webApp>
                    <contextPath>/test</contextPath>
                  </webApp>
                  <httpConnector>
                    <port>8168</port>
                    <host>localhost</host>
                  </httpConnector>
                </configuration>
            </plugin>
  • scanIntervalSeconds 表示該插件掃描項(xiàng)目變更的時(shí)間間隔,如配置默認(rèn)0主穗,表示不掃描泻拦。

  • contextPath:表示項(xiàng)目部署后的context path『雒剑可以通過(guò)http://hostname:port/test訪問(wèn)該應(yīng)用争拐。

  • port端口,默認(rèn)8080

  • host配置主機(jī)名,默認(rèn)localhost

  • settings.xml配置
    默認(rèn)情況下晦雨,只有org.apache.maven.plugins和org.codehaus.mojo兩個(gè)groupId下的插件才支持簡(jiǎn)化的命令調(diào)用架曹,即mvn help:system,是可以的,因?yàn)閙aven-help-plugin的groupid是org.apache.maven.plugins金赦。而mvn jetty:run就不行音瓷,因?yàn)閖etty-maven-plugin的groupId是org.eclipse.jetty。更多原因請(qǐng)看 maven---7生命周期和插件--->8.4插件前綴
    為了在命令行直接運(yùn)行mvn jetty:run夹抗,用戶(hù)需要配置settings.xml如下:

 <pluginGroups>
    <!-- pluginGroup
     | Specifies a further group identifier to use for plugin lookup.
    <pluginGroup>com.your.plugins</pluginGroup>
    -->
    <pluginGroup>org.eclipse.jetty</pluginGroup>
    ....
  </pluginGroups>

4.2.2啟動(dòng)jetty

現(xiàn)在運(yùn)行如下命令啟動(dòng)jetty-maven-plugin:

mvn jetty:run

默認(rèn)端口8080,希望使用其他端口通過(guò)jetty.http.port參數(shù)绳慎,如

mvn jetty:run -Djetty.http.port=9999

啟動(dòng)jetty之后,用戶(hù)修改類(lèi)漠烧、jsp杏愤、html等都會(huì)被插件掃描到并重新自動(dòng)部署。
4.2.3jetty-maven-plugin的其它配置
上面是jetty-maven-plugin的最核心配置已脓,如果有需要可以自定義web.xml位置珊楼,項(xiàng)目class文件位置,web資源目錄位置等度液。還能以war包方式部署項(xiàng)目厕宗,甚至在maven生命周期嵌入jetty-maven-plugin等,具體看官網(wǎng)介紹:org.eclipse.jetty堕担。

4.3其它jetty-maven-plugin插件

除了上面的配置jetty的插件外已慢,還有其它的,可以選擇使用霹购。網(wǎng)址org.mortbay.jetty佑惠,其配置我測(cè)試過(guò)了,也可以使用。同樣也需要在settings.xml中配置pluginGroup膜楷。

    <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.5</version>
                <configuration>
                    <webAppSourceDirectory>src/main/webapp</webAppSourceDirectory>
                    <scanIntervalSeconds>5</scanIntervalSeconds>  每隔10秒查看項(xiàng)目是否有變化旭咽,有變化重新編譯
                    <contextPath>/iqasweb</contextPath> 
                    <connectors> 
                    org.mortbay.jetty.nio.SelectChannelConnector
                        <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                            <port>8088</port>   服務(wù)器監(jiān)聽(tīng)端口
                        </connector>
                    </connectors>
                </configuration>
            </plugin> 

運(yùn)行命令:jetty:run

5.使用Cargo實(shí)現(xiàn)自動(dòng)化部署

  • Cargo是一組幫助用戶(hù)操作web容器的工具,它支持計(jì)劃所有web容器(tomcat赌厅、jboss穷绵、jetty、glassfish等)察蹲,Cargo通過(guò)cargo-maven2-plugin提供Maven集成请垛,Maven使用該插件將Web項(xiàng)目部署到Web容器中催训。
  • cargo-maven2-plugin和jetty-maven-plugin的功能相似洽议,但目的不同。
    • jetty-maven-plugin:幫助日常開(kāi)發(fā)人員的快速開(kāi)發(fā)和測(cè)試漫拭。
    • cargo-maven2-plugin:服務(wù)于自動(dòng)化部署亚兄。

插件官網(wǎng):Cargo

5.1需求

  • 專(zhuān)門(mén)的測(cè)試人員希望一條簡(jiǎn)單的Maven命令就可以構(gòu)建項(xiàng)目并部署到Web容器中,然后進(jìn)行功能測(cè)試采驻。
  • 以tomcat8為例审胚,介紹如何自動(dòng)化地將web應(yīng)用部署至本地和遠(yuǎn)程web容器中。

5.2部署至本地Web容器

  • Cargo支持兩種本地部署方式:standalone模式和existing模式礼旅。
  • standalone模式:Cargo會(huì)從Web容器的安裝目錄復(fù)制一份配置到用戶(hù)指定的目錄膳叨,然后在此基礎(chǔ)上部署應(yīng)用,每次重新構(gòu)建的時(shí)候痘系,這個(gè)目錄都會(huì)被清空菲嘴,所有配置被重新生成。
  • existing模式:用戶(hù)需要指定現(xiàn)有的Web容器配置的目錄汰翠,然后Cargo會(huì)直接使用這些配置并將應(yīng)用部署到其對(duì)應(yīng)的位置龄坪。

5.2.1standalone模式

官網(wǎng)standalone模式

 <!-- 配置cargo-maven2-plugin插件實(shí)現(xiàn)自動(dòng)部署,命令cargo:start -->
       <plugin>
        <groupId>org.codehaus.cargo</groupId> 
        <artifactId>cargo-maven2-plugin</artifactId>
        <version>1.5.1</version>
        <configuration>
            <container>
              <containerId>tomcat8x</containerId>
              <home>D:\Soft\tomcat\tomcat8.0.32</home>
            </container>
            <configuration>
              <type>standalone</type>
              <home>${project.build.directory}/tomcat8x</home>
              <properties>
                <cargo.servlet.port>8083</cargo.servlet.port>
              </properties>
            </configuration>
        </configuration>
      </plugin> 
  • 解釋 配置了configuration和container
  • configuration:type表示部署模式。home:表示復(fù)制容器配置到什么位置复唤,${project.build.directory}/tomcat8x表示構(gòu)建輸出目錄健田,即target/的tomcat8x子目錄。
    cargo.servlet.port配置容器監(jiān)聽(tīng)端口佛纫,默認(rèn)8080
  • container: containerId表示容器的類(lèi)型妓局,home元素表示容器的安裝目錄,基于該配置呈宇,Cargo會(huì)從D:\Soft\tomcat\tomcat8.0.32目錄下復(fù)制配置到當(dāng)前項(xiàng)目的target/tomcat8x下好爬。

5.2.2運(yùn)行

  • 使用命令
mvn clean package cargo:run

當(dāng)然如果target已經(jīng)有構(gòu)建好的war可以直接cargo:run

  • 然后進(jìn)入瀏覽器進(jìn)行訪問(wèn):http://hostname:port/項(xiàng)目打包的名稱(chēng)/
    訪問(wèn)的項(xiàng)目打包名稱(chēng)不是你項(xiàng)目名稱(chēng),打包名稱(chēng)默認(rèn)是artifactId-version.packing攒盈〉志校可以通過(guò) finalName來(lái)配置友好的名稱(chēng)。project/build/finalName.
  • 同樣為了使用前綴簡(jiǎn)化命令調(diào)用cargo:run型豁。在settings.xml中配置pluginGroup
  <pluginGroups>
...
<pluginGroup>org.codehaus.cargo</pluginGroup>
  </pluginGroups>

不然出現(xiàn)以下錯(cuò)誤

[ERROR] No plugin found for prefix 'cargo' in the current project and in the plu
gin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repo
sitories [local (D:\Soft\maven\maven_jar\repository), nexus (http://172.19.201.1
55:8081/repository/maven-public/)] -> [Help 1]

5.2.3結(jié)束

運(yùn)行成功

命令:Ctr+C結(jié)束

5.2.4existing模式

要將應(yīng)用直接部署到現(xiàn)有的Web容器下僵蛛,使用該模式尚蝌。

<plugin>
        <groupId>org.codehaus.cargo</groupId> 
        <artifactId>cargo-maven2-plugin</artifactId>
        <version>1.5.1</version>
        <configuration>
            <container>
              <containerId>tomcat8x</containerId>
              <home>D:\Soft\tomcat\tomcat8.0.32</home>
            </container>
            <configuration>
              <type>existing</type>
              <home>D:\Soft\tomcat\tomcat8.0.32</home>
              <properties>
                <cargo.servlet.port>9996</cargo.servlet.port>
              </properties>
            </configuration>
        </configuration>
      </plugin> 

和standalone不同的是configuration下的目錄表示現(xiàn)有Web容器目錄,運(yùn)行mvn cargo:start之后充尉,便能夠在tomcat的webapps子目錄看到被部署的Maven項(xiàng)目飘言。

5.3部署至遠(yuǎn)程web容器(吐血)

5.3.1配置

  • 也可以讓Cargo部署應(yīng)用至遠(yuǎn)程的正在運(yùn)行的Web容器中。當(dāng)然驼侠,前提是擁有該容器的相應(yīng)管理員權(quán)限姿鸿。相關(guān)配置如下:
<!-- 配置cargo-maven2-plugin插件實(shí)現(xiàn)自動(dòng)部署,部署至遠(yuǎn)程Web容器,命令cargo:start -->
       <plugin>
        <groupId>org.codehaus.cargo</groupId> 
        <artifactId>cargo-maven2-plugin</artifactId>
        <version>1.4.4</version>
        <configuration>
            <container>
              <containerId>tomcat8x</containerId>
              <type>remote</type>
            </container>
            <configuration>
             <type>runtime</type>
             <properties>
              <cargo.remote.username>tomcat_script</cargo.remote.username>
              <cargo.remote.password>tomcat_script</cargo.remote.password>
              <cargo.remote.uri>http://localhost:8080/manager/text</cargo.remote.uri>
             </properties>
            </configuration>
        </configuration>
      </plugin> 
  • 解釋
    • container的type值為remote,不然默認(rèn)installed倒源。
    • configuration:的type為runtime苛预,表示既不使用獨(dú)立的容器配置,也不使用本地現(xiàn)有的容器配置笋熬,而是依賴(lài)一個(gè)已運(yùn)行的容器热某。
      properties聲明一些容器熱部署相關(guān)的配置。這里是tomcat8的用戶(hù)名胳螟、密碼昔馋、管理地址。

注意:配置的tomcat用戶(hù)名要有manager-scripte權(quán)限糖耸。即在tomcat-users.xml配置

  <user username="tomcat_script" password="tomcat_script" roles="manager-script"/>

對(duì)于的tomcat6及之前的版本秘遏,遠(yuǎn)程連接地址的寫(xiě)法和tomcat7、tomcat8不同嘉竟,如下邦危。

<cargo.remote.manager.url>http://localhost:8080/manager/html</cargo.remote.manager.url>

5.3.2運(yùn)行

  • 先啟動(dòng)tomcat。
  • 執(zhí)行mvn clean package cargo:redeploy
    正常運(yùn)行周拐。

5.3.3沒(méi)弄懂的地方

上面部署的遠(yuǎn)程tomcat其實(shí)是在本地localhost铡俐,部署是成功的,當(dāng)我把項(xiàng)目部署到遠(yuǎn)程的tocmat上時(shí)即修改管理地址和遠(yuǎn)程tomcat的管理賬號(hào)時(shí)妥粟。

<cargo.remote.uri>http://192.19.106.168:8080/manager/text</cargo.remote.uri>

結(jié)果出錯(cuò):至今不知道問(wèn)題出在哪审丘,找了好久。勾给。滩报。。播急。脓钾。我在想是不是我的部署的項(xiàng)目太大了298M。但是部署到本地沒(méi)有問(wèn)題白可训??希望懂得可以幫我解答一下,出錯(cuò)提示如下握截,查了很久說(shuō)是權(quán)限飞崖,權(quán)限設(shè)置了manager-script,但是本地都可以,就是部署到遠(yuǎn)程不可以谨胞。固歪。。胯努。

[ERROR] Failed to execute goal org.codehaus.cargo:cargo-maven2-plugin:1.4.4:rede
ploy (default-cli) on project iqasweb: Execution default-cli of goal org.codehau
s.cargo:cargo-maven2-plugin:1.4.4:redeploy failed: Failed to redeploy [E:\Reposi
tory\iqasproject\iqasweb\target\iqasweb-remote.war]: The username you provided i
s not allowed to use the text-based Tomcat Manager (error 403): Server returned
HTTP response code: 403 for URL: http://172.19.201.155:8080/manager/text/list ->

留言

有什么不懂的一起探討一下吧牢裳,歡迎留下寶貴意見(jiàn),喜歡就點(diǎn)個(gè)贊吧(哈哈)叶沛,多謝鼓勵(lì)蒲讯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市恬汁,隨后出現(xiàn)的幾起案子伶椿,更是在濱河造成了極大的恐慌,老刑警劉巖氓侧,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異导狡,居然都是意外死亡约巷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)旱捧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)独郎,“玉大人,你說(shuō)我怎么就攤上這事枚赡∶グ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵贫橙,是天一觀的道長(zhǎng)贪婉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)卢肃,這世上最難降的妖魔是什么疲迂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮莫湘,結(jié)果婚禮上尤蒿,老公的妹妹穿的比我還像新娘。我一直安慰自己幅垮,他們只是感情好腰池,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般示弓。 火紅的嫁衣襯著肌膚如雪演怎。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天避乏,我揣著相機(jī)與錄音爷耀,去河邊找鬼。 笑死拍皮,一個(gè)胖子當(dāng)著我的面吹牛歹叮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播铆帽,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼咆耿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了爹橱?” 一聲冷哼從身側(cè)響起萨螺,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎愧驱,沒(méi)想到半個(gè)月后慰技,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡组砚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年吻商,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糟红。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡艾帐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盆偿,到底是詐尸還是另有隱情柒爸,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布事扭,位于F島的核電站捎稚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏句旱。R本人自食惡果不足惜阳藻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谈撒。 院中可真熱鬧腥泥,春花似錦、人聲如沸啃匿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至夹厌,卻和暖如春豹爹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背矛纹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工臂聋, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人或南。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓孩等,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親采够。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肄方,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)蹬癌,斷路器权她,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評(píng)論 6 342
  • 轉(zhuǎn)自:http://www.cnblogs.com/crazy-fox/archive/2012/02/09/23...
    晴天哥_王志閱讀 2,245評(píng)論 2 27
  • 使用指導(dǎo) 如何添加外部依賴(lài)jar包 在Maven工程中添加依賴(lài)jar包,很簡(jiǎn)單逝薪,只要在POM文件中引入對(duì)應(yīng)的<de...
    靜默虛空閱讀 2,780評(píng)論 0 13
  • 我們都知道Maven本質(zhì)上是一個(gè)插件框架隅要,它的核心并不執(zhí)行任何具體的構(gòu)建任務(wù),所有這些任務(wù)都交給插件來(lái)完成翼闽,例如編...
    付鵬丶閱讀 1,619評(píng)論 0 15