(III)Maven - clean compile

在進(jìn)行完基本的POM配置之后质况,我們來(lái)舉個(gè)'小李子'吧

package com.play.myMaven;

/**
 * Hello Maven
 *
 * @author Songyanyan
 */
public class HelloWorld {
  public String sayHello(){
    return "Hello World";
  }

  public static void main(String[] args) {
   System.out.println(new HelloWorld().sayHello());
  }
}

雖然是個(gè)簡(jiǎn)單的‘李子’,我們?nèi)孕枰⒁鈨牲c(diǎn)

  • 在絕大多數(shù)情況下玻靡,應(yīng)該把項(xiàng)目主代碼放到src/main/java/目錄下(遵循年Maven的約定)结榄,Maven會(huì)自動(dòng)搜尋該目錄找到項(xiàng)目主代碼
  • 一般來(lái)說(shuō),項(xiàng)目中Java類的包都應(yīng)該基于項(xiàng)目的groupId和artifactId囤捻,這樣更加清晰臼朗,同時(shí)也方便搜索構(gòu)件/Java類

清理和編譯

開始編譯咯!
在項(xiàng)目根目錄下運(yùn)行命令mvn clean compile
emmmm蝎土,遺憾的是并沒(méi)有那么順利的像書中那樣一次通過(guò)视哑,發(fā)生了什么呢?(沒(méi)有出現(xiàn)這個(gè)問(wèn)題的小伙伴可以直接跳過(guò)這一部分)

C:\Subversion\MavenPrj\helloMaven>mvn clean complie
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building parent 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.265 s
[INFO] Finished at: 2018-06-05T15:21:33+08:00
[INFO] Final Memory: 6M/123M
[INFO] ------------------------------------------------------------------------
[ERROR] Unknown lifecycle phase "complie". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-i
d>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-
resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources,
  test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install,
deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/LifecyclePhaseNotFoundException

第一個(gè)問(wèn)題: 是mvn clean compile !!! 不是complie
修正后誊涯,再次執(zhí)行 mvn clean compile:

C:\Subversion\MavenPrj\helloMaven>mvn clean complie
java.lang.NoClassDefFoundError:     Lorg/sonatype/plexus/build/incremental/BuildContext;
    at java.lang.Class.getDeclaredFields0(Native Method)
    at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
    at java.lang.Class.getDeclaredFields(Class.java:1916)
...
Caused by: java.lang.ClassNotFoundException: org.sonatype.plexus.build.incremental.BuildContext
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.292 s
[INFO] Finished at: 2018-06-05T16:20:13+08:00
[INFO] Final Memory: 7M/123M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources (default-resources) on project hello-maven: Execution de
fault-resources of goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources failed: A required class was missing while executing org.apache
.maven.plugins:maven-resources-plugin:2.6:resources: Lorg/sonatype/plexus/build/incremental/BuildContext;

又一次的FAILURE挡毅,無(wú)奈,那就用Maven Projects默認(rèn)的Lifecycle中compile直接執(zhí)行暴构,和上面的報(bào)錯(cuò)一致跪呈,百度一圈也沒(méi)找到合適方案,嗯丹壕,那就拆開檢查庆械!
執(zhí)行mvn clean:

C:\Subversion\MavenPrj\helloMaven>mvn clean
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building parent 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ hello-maven ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.175 s
[INFO] Finished at: 2018-06-05T16:28:02+08:00
[INFO] Final Memory: 6M/123M
[INFO] ------------------------------------------------------------------------

這次構(gòu)建成功,那看來(lái)就是complie的問(wèn)題了菌赖,看了下plugins中的版本缭乘,會(huì)不會(huì)是版本問(wèn)題呢?于是看了下最新的Maven plugins信息,更新了一些默認(rèn)構(gòu)建插件:

<build><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
    <plugins>
        <plugin>
            <artifactId>maven-clean-plugin</artifactId>
            <version>3.0.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.0.2</version>
        </plugin>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
        </plugin>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.20.1</version>
        </plugin>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.0.2</version>
        </plugin>
        <plugin>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.2</version>
        </plugin>
        <plugin>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.8.2</version>
        </plugin>
    </plugins>
</build>
Maven3.3.9的默認(rèn)構(gòu)建插件版本信息.jpg

加載了新插件的構(gòu)建版本信息.png

執(zhí)行mvn clean compile:

C:\Subversion\MavenPrj\helloMaven>mvn clean compile
[INFO] Scanning for projects...
[INFO]

[INFO] ------------------------------------------------------------------------
[INFO] Building parent 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.0.0:clean (default-clean) @ hello-maven ---
[INFO] Deleting C:\Subversion\MavenPrj\helloMaven\target
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ hello-maven ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Subversion\MavenPrj\helloMaven\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @hello-maven ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to C:\Subversion\MavenPrj\helloMaven\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.086 s
[INFO] Finished at: 2018-06-05T16:52:18+08:00
[INFO] Final Memory: 14M/207M
[INFO] ------------------------------------------------------------------------

構(gòu)建成功堕绩!
分析一下log策幼,使用到的構(gòu)建都會(huì)有對(duì)應(yīng)的版本信息輸出:

  • Scanning for projects :正在掃描

  • Building parent 1.0-SNAPSHOT :正在構(gòu)建parent 1.0-SNAPSHOT

  • clean :告訴Maven清理輸出目錄C:\Subversion\MavenPrj\helloMaven\target

  • Using 'UTF-8' encoding to copy filtered resources. :使用“UTF-8”編碼復(fù)制過(guò)濾資源這是在<properties>中添加了

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    

可以避免出現(xiàn)警告[WARNING] Using platform encoding (UTF-8 actually) to copy filter

  • compile :告訴Maven編譯項(xiàng)目主代碼

執(zhí)行順序:clean:clean任務(wù),刪除target/目錄(默認(rèn)情況下奴紧,Maven構(gòu)建的所有輸出都在target/目錄中)特姐,接著執(zhí)行resources:resources任務(wù)(這里未定義項(xiàng)目資源,暫且略過(guò))黍氮,最后執(zhí)行compiler:compile任務(wù)將項(xiàng)目主代碼編譯至target/classes目錄

上面所提到的clean:clean唐含,resources:resources,compiler:compile
分別對(duì)應(yīng)各插件的不同goal

以上就完成了項(xiàng)目的清理和編譯任務(wù)沫浆,接下來(lái)寫一些單元測(cè)試代碼并讓Maven執(zhí)行自動(dòng)化測(cè)試


自動(dòng)化測(cè)試

主代碼和測(cè)試代碼分別位于獨(dú)立的目錄中捷枯。Maven項(xiàng)目默認(rèn)的主代碼目錄:src/main/java ,默認(rèn)的測(cè)試代碼目錄是src/test/java

先為項(xiàng)目添加一個(gè)JUnit依賴

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
</dependencies>

有了groupId:junit专执,artifactId:junit淮捆,version:4.11這三個(gè)值的聲明,就可以確認(rèn)這個(gè)JUnit的坐標(biāo)本股,Maven可以訪問(wèn)中央倉(cāng)庫(kù)并自動(dòng)下載junit-4.11.jar(而在Maven之前我們需要自行去JUnit官網(wǎng)下載分發(fā)包)
scope為依賴范圍攀痊,值為test表示該依賴只對(duì)測(cè)試有效。也就是拄显,測(cè)試代碼中import JUnit是OK的苟径,但是在主代碼中import JUnit會(huì)有編譯錯(cuò)誤。不聲明默認(rèn)值為compile凿叠,表示該依賴對(duì)主代碼和測(cè)試代碼都有效涩笤。
我們來(lái)測(cè)試一下Hello World類的sayHello()方法吧,對(duì)應(yīng)主代碼目錄生成測(cè)試目錄結(jié)構(gòu)盒件,如圖:

主代碼目錄結(jié)構(gòu)和測(cè)試代碼目錄結(jié)構(gòu).png

package com.play.myMaven;
import org.junit.Test;
import static org.junit.Assert.assertEquals;

/**
 * HellMavenTest
 *
 * @author Songyanyan
 */
public class HelloWorldTest {
  @Test
  public void testSayHello() {
    HelloWorld helloWorld = new HelloWorld();
    String result = helloWorld.sayHello();
    assertEquals("Hello Maven", result);
  }
}

典型的單元測(cè)試有三個(gè)步驟:

  • 測(cè)試類及測(cè)試數(shù)據(jù)

  • 測(cè)試的信訪維

  • 檢查結(jié)果
    調(diào)用Maven執(zhí)行測(cè)試。運(yùn)行mvn clean test
    正確結(jié)果如下:

      C:\Subversion\MavenPrj\helloMaven>mvn clean test
      [INFO] Scanning for projects...
      [INFO]
      [INFO] ------------------------------------------------------------------------
      [INFO] Building parent 1.0-SNAPSHOT
      [INFO] ------------------------------------------------------------------------
      [INFO]
      [INFO] --- maven-clean-plugin:3.0.0:clean (default-clean) @ hello-maven ---
      [INFO] Deleting C:\Subversion\MavenPrj\helloMaven\target
      [INFO]
      [INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ hello-maven ---
      [INFO] Using 'UTF-8' encoding to copy filtered resources.
      [INFO] skip non existing resourceDirectory C:\Subversion\MavenPrj\helloMaven\src\main\resources
      [INFO]
      [INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ hello-maven ---
      [INFO] Changes detected - recompiling the module!
      [INFO] Compiling 1 source file to C:\Subversion\MavenPrj\helloMaven\target\classes
      [INFO]
      [INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ hello-maven ---
      [INFO] Using 'UTF-8' encoding to copy filtered resources.
      [INFO] skip non existing resourceDirectory C:\Subversion\MavenPrj\helloMaven\src\test\resources
      [INFO]
      [INFO] --- maven-compiler-plugin:3.7.0:testCompile (default-testCompile) @ hello-maven ---
      [INFO] Changes detected - recompiling the module!
      [INFO] Compiling 1 source file to C:\Subversion\MavenPrj\helloMaven\target\test-classes
      [INFO]
      [INFO] --- maven-surefire-plugin:2.20.1:test (default-test) @ hello-maven ---
      [INFO]
      [INFO] -------------------------------------------------------
      [INFO]  T E S T S
      [INFO] -------------------------------------------------------
      [INFO] Running com.play.myMaven.HelloWorldTest
      [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.02 s - in com.play.myMaven.HelloWorldTest
      [INFO]
      [INFO] Results:
      [INFO]
      [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
      [INFO]
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD SUCCESS
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time: 1.969 s
      [INFO] Finished at: 2018-06-05T19:52:48+08:00
      [INFO] Final Memory: 16M/167M
      [INFO] ------------------------------------------------------------------------
    

可以看到Maven執(zhí)行測(cè)試test之前舱禽,會(huì)先進(jìn)行

  • clean:clean
  • resources:resources
  • compiler:compile
  • resources:testResources
  • compiler:testCompile
    項(xiàng)目主資源處理炒刁、主代碼編譯、測(cè)試資源處理誊稚、測(cè)試代碼編譯等操作翔始,這是Maven生命周期的一個(gè)特性。
    通過(guò)編譯的測(cè)試代碼會(huì)在target/test-classes生成二進(jìn)制文件(Compiling 1 source file to C:\Subversion\MavenPrj\helloMaven\target\test-classes)里伯,
    然后緊接著surefire:test任務(wù)運(yùn)行測(cè)試(surfire是maven中負(fù)責(zé)測(cè)試的插件)城瞎,運(yùn)行測(cè)試用例,并給出測(cè)試報(bào)告疾瓮,顯然這個(gè)是測(cè)試通過(guò)的例子脖镀,結(jié)果Results:運(yùn)行1條,失敗0條狼电,編譯錯(cuò)誤0條蜒灰,跳過(guò)0條

我們來(lái)看一下測(cè)試失敗的情況:

    C:\Subversion\MavenPrj\helloMaven>mvn clean test
    ...
    [INFO] -------------------------------------------------------
    [INFO]  T E S T S
    [INFO] -------------------------------------------------------
    [INFO] Running com.play.myMaven.HelloWorldTest
    [ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.025 s <<< FAILURE! - in com.play.myMaven.HelloWorldTest
    [ERROR] testSayHello(com.play.myMaven.HelloWorldTest)  Time elapsed: 0.006 s  <<< FAILURE!
    org.junit.ComparisonFailure: expected:<Hello [Maven]> but was:<Hello [World]>
            at com.play.myMaven.HelloWorldTest.testSayHello(HelloWorldTest.java:22)
    [INFO]
    [INFO] Results:
    [INFO]
    [ERROR] Failures:
    [ERROR]   HelloWorldTest.testSayHello:22 expected:<Hello [Maven]> but was:<Hello [World]>
    [INFO]
    [ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 2.202 s
    [INFO] Finished at: 2018-06-05T21:18:19+08:00
    [INFO] Final Memory: 16M/163M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test (default-test) on project hello-maven: There are test failures.
    [ERROR]
    [ERROR] Please refer to C:\Subversion\MavenPrj\helloMaven\target\surefire-reports for the individual test results.
    [ERROR] Please refer to dump files (if any exist) [date]-jvmRun[N].dump, [date].dumpstream and [date]-jvmRun[N].dumpstream.
    [ERROR] -> [Help 1]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

...部分都是一樣的不再贅述

FAILURE! - in com.play.myMaven.HelloWorldTest
在HelloWorldTest類中出現(xiàn)失敗

org.junit.ComparisonFailure: expected:<Hello [Maven]> but was:<Hello [World]> at com.play.myMaven.HelloWorldTest.testSayHello(HelloWorldTest.java:22)
在HelloWorldTest類中22行弦蹂,期望值為<Hello [Maven]>,但是原類值為<Hello [World]>强窖,通過(guò)log輸出可見錯(cuò)誤提示也是很明顯的
注:《Maven實(shí)戰(zhàn)》學(xué)習(xí)筆記

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凸椿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子翅溺,更是在濱河造成了極大的恐慌脑漫,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咙崎,死亡現(xiàn)場(chǎng)離奇詭異窿撬,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)叙凡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門劈伴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人握爷,你說(shuō)我怎么就攤上這事跛璧。” “怎么了新啼?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵追城,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我燥撞,道長(zhǎng)座柱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任物舒,我火速辦了婚禮色洞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘冠胯。我一直安慰自己火诸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布荠察。 她就那樣靜靜地躺著置蜀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悉盆。 梳的紋絲不亂的頭發(fā)上盯荤,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音焕盟,去河邊找鬼秋秤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的航缀。 我是一名探鬼主播商架,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芥玉!你這毒婦竟也來(lái)了蛇摸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤灿巧,失蹤者是張志新(化名)和其女友劉穎赶袄,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抠藕,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饿肺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盾似。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敬辣。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖零院,靈堂內(nèi)的尸體忽然破棺而出溉跃,到底是詐尸還是另有隱情,我是刑警寧澤告抄,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布撰茎,位于F島的核電站,受9級(jí)特大地震影響打洼,放射性物質(zhì)發(fā)生泄漏龄糊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一募疮、第九天 我趴在偏房一處隱蔽的房頂上張望炫惩。 院中可真熱鬧,春花似錦酝锅、人聲如沸诡必。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蟋字,卻和暖如春稿蹲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹊奖。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工苛聘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓设哗,卻偏偏與公主長(zhǎng)得像唱捣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子网梢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理震缭,服務(wù)發(fā)現(xiàn),斷路器战虏,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,803評(píng)論 6 342
  • 1.編寫POM Maven項(xiàng)目的核心文件是pom.xml拣宰,POM(Project Objcet Model)項(xiàng)目對(duì)...
    zlcook閱讀 5,907評(píng)論 7 26
  • 簡(jiǎn)介 概述 Maven 是一個(gè)項(xiàng)目管理和整合工具 Maven 為開發(fā)者提供了一套完整的構(gòu)建生命周期框架 Maven...
    閩越布衣閱讀 4,288評(píng)論 6 39
  • Maven入門教程 1.1.介紹、環(huán)境配置 1.1.1.Maven介紹 Maven是一個(gè)采用純Java編寫的開源項(xiàng)...
    安易學(xué)車閱讀 1,458評(píng)論 2 10