MyCat 1.6部署編譯構建環境

MyCat 1.6部署編譯構建環境

簡單來說,編譯(compile)是用javac編譯器將.java源代碼編譯成.class中間碼的動作;而構建(build)則是不止將源代碼編譯,還包括編譯后執行開發者指定的測試、將所有.class打包成.jar包的動作,以及編譯前和編譯時所遇到的工具、包依賴的分析和下載問題。

下面以Windows 7+下面的軟件,將MyCat 1.6(Mycat-server)從源代碼構建成一個如同官方release的可運行的jar。整個過程最關鍵的幾步需要聯網,而且Eclipse(內置的Maven)會下載約650MB的依賴包和插件,總耗時在3小時~10小時不等(絕大部分時間都花在下載上)。

  • Eclipse Neon.3 4.6.3

  • Mycat-server 1.6 brach

安裝配置Eclipse

Eclipse官網下載并解壓eclipse-java-neon-3-win32-x86_64.zip到本地目錄中,整個安裝就是這么簡單。

配置Maven(Ecplise內置)

Maven是個強大的項目構建工具,在這里我們只關注它分析、自動下載依賴包的功能。Eclipse內嵌了Maven,但這里直接使用默認配置會有兩個不方便:

  1. 默認只從Apache的中央庫下載,會找不到trilead-ssh2的build221等插件或依賴包,我們需要添加其他庫(下載源)來下載。

  2. 從遠程庫下載來的項目依賴包和Maven插件默認保存到Windows的用戶目錄(%USERPROFILE%)的.ms2/repository里,在C盤不充裕也沒有做目錄移動時,我們更希望把這些下載內容保存到其他空閑盤區。

為此,我們在Eclipse的解壓目錄里創建settings.xml,添加以下內容,修改<localRepository>標簽里的路徑為自己機器上的路徑,以UTF-8編碼保存。

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <!-- 將依賴包/Maven插件下載到下面的目錄里 -->
    <localRepository>D:\maven_repo</localRepository>
    <profiles>
        <!-- 定義名叫mycat的配置 -->
        <profile>
            <id>mycat</id>
            <!-- 依賴包庫(下載源) -->
            <repositories>
                <repository>
                    <id>nexus</id>
                    <name>local private nexus</name>
                    <url>http://nexus.mycat.io/content/groups/public</url>
                </repository>
                <repository>
                    <id>java.net</id>
                    <url>https://maven.java.net/content/repositories/public</url>
                </repository>
                <repository>
                    <id>JBoss repository</id>
                    <url>http://repository.jboss.org/nexus/content/groups/public</url>
                </repository>
                <repository>
                    <id>Jenkins ci</id>
                    <url>http://repo.jenkins-ci.org/releases</url>
                </repository>
            </repositories>
            <!-- Maven插件庫(下載源) -->
            <pluginRepositories>
                <pluginRepository>
                    <id>nexus</id>
                    <url>http://nexus.mycat.io/content/groups/public</url>
                </pluginRepository>
                <pluginRepository>
                    <id>java.net</id>
                    <url>https://maven.java.net/content/repositories/public</url>
                </pluginRepository>
                <pluginRepository>
                    <id>JBoss pluginRepository</id>
                    <url>http://pluginRepository.jboss.org/nexus/content/groups/public</url>
                </pluginRepository>
                <pluginRepository>
                    <id>Jenkins ci</id>
                    <url>http://repo.jenkins-ci.org/releases</url>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
    <activeProfiles>
     <!-- 啟用上面定義的mycat配置 -->
    <activeProfile>mycat</activeProfile>
  </activeProfiles>
</settings>

配置Eclipse

先啟動Eclipse,進入到主界面后,通過Window->Prferences,打開配置窗口。

找到Java->Installed JREs,看看本機的Java 8安裝目錄是否被識別了,沒有的話,點擊Add按鈕來添加(添加后記得選中它,并且點擊右下角的Apply按鈕)。** 雖然這里叫做JRE,但由于我們需要編譯MyCat,所以必須指向的是JDK。 **

找到Maven->User Settings,點擊User Setting的Browse ...按鈕,選擇我們上面創建的settings.xml文件,然后依次點擊Update Settings按鈕和Reindex按鈕來讓settings.xml生效。如果Local Repository是否已經變成了settings.xml中<localRepository>中的值,那么說明配置成功,點擊Apply按鈕之后,OK關閉配置窗口。

下載Mycat-server源代碼

到Github.com下載MyCATApache/Mycat-Server的1.6源代碼到本地并解壓。

在Eclipse中導入Mycat-server

回到Eclipse中,File->Import...打開導入項目對話框,選擇Maven->Existing Maven Projects,點擊Next按鈕。

點擊Root Directory的Browse...按鈕,選擇解壓后的MyCat 1.6根目錄,選擇Finish,開始導入。** 導入過程中,如果MayCat的依賴包和Maven插件不在本地庫里,Maven會從外部庫下載,因此第一次導入會非常耗時并需要全程聯網。 ** 在電信10M光纖,無任何加速或者科學手段下,第一次導入基本都要用2個多小時。不過下載好了之后,以后導入需要相同包的應用或者再次導入MyCat自己時,就不再需要下載了。所以在下載過程中卡住了的話,殺掉Eclipse進程,重新打開Ecplise,刪除導入了只有一半的Mycat-server項目,再重新導入就能繼續下去了

修改Mycat-server的pom.xml:增加源代碼的編碼聲明(可選)

Mycat-server的pom.xml沒有定義源代碼的編碼方式。在編譯過程中,Maven會報“Using platform encoding (某某編碼 actually) to copy filtered resources, i.e. build is platform dependent!”這樣的WARNING。雖然目前并不影響編譯,但很難說以后Mycat-server會不會有內嵌的非ASCII字符集的多國語言存在,所以最好還是修改解壓后的MyCat根目錄里的pom.xml,在<app.encoding>標簽下增加以下一行,來讓Maven按UTF-8來理解源代碼。

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

修改Mycat-server的pom.xml:增加Maven插件的版本聲明(可選)

Mycat-server的pom.xml沒有聲明maven-jar-plugin和maven-eclipse-plugin的所需版本。在編譯過程中,Maven會因此而報WARNING。這個WARNING沒有實質性的影響,但按下面修改解壓后的MyCat根目錄里的pom.xml避免這個警告。

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version><!-- 增加此條目,聲明使用的jar插件版本 -->
                <configuration>
                    <excludes>
                        <exclude>**/.svn/**</exclude>
                    </excludes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>test-jar</goal>
                        </goals>
                        <!-- configuration> <finalName>${project.build.finalName}-${buildNumber}</finalName> 
                            </configuration -->
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.10</version><!-- 增加此條目,聲明使用的eclipse插件版本 -->
                <configuration>
                    <sourceExcludes>
                        <sourceExclude>**/.svn/**</sourceExclude>
                    </sourceExcludes>
                    <downloadSources>true</downloadSources>
                    <outputDirectory>classes</outputDirectory>
                    <additionalConfig>
                        <file>
                            <name>.settings/org.eclipse.core.resources.prefs</name>
                            <content>
               <![CDATA[eclipse.preferences.version=1${line.separator}encoding/<project>=${app.encoding}${line.separator}]]>
                            </content>
                        </file>
                    </additionalConfig>
                </configuration>
            </plugin>

新增構建配置(build configuration)

在Ecplise的主界面上,選中Mycat-server項目,再在工具欄Run->Run Configurations...,打開構建配置管理界面。

雙擊界面中的Maven Build,等它自動創建一個叫New_configuration的新配置。然后按下面修改這個新配置,再點Apply把修改部分保存:

  • 修改Name欄,給這個“New_configuration”配置起個新名字

  • 點擊Base diretory下的Workspace...按鈕,選擇Mycat-server項目然后按OK,以Mycat-server的根目錄為基準目錄

  • 在Goals欄,輸入clean install,指明Maven對這個項目構建時,執行pom中定義的clean和install所屬操作(Maven的goal概念,類似Makefile體系的make install中的install)

  • 在界面中間的一大堆復選框中,我們只選中Debug Output和Skip Tests——Debug Ouput能夠豐富Maven構建項目時的輸出信息,萬一碰到錯誤也有跡可查;Skip Tests讓Maven跳過Mycat-server定制的測試項目,測試的輸出很多而且很復雜,我們目前僅需要編譯出MyCat的jar包,所以我們應該跳過測試。

繼續在同一界面里,點擊Common選項卡,進行以下修改,最后點擊Apply保存:

  • 點擊Encoding框的Other單選下拉框,選中UTF-8來讓Eclipse的Console窗口以UTF-8去理解Maven的輸出,這樣才能使Eclipse正確顯示Mycat-server項目里的中文提示

  • 選中Standard Input and Output框中的Output File單選框,然后點擊Workspace...按鈕,選中Mycat-server項目后OK,再在文本框新出現的“"${workspace_loc:/Mycat-server}”后面鍵盤輸入“/eclipse_console.log”。于是在構建過程中的所有信息(INFO、WARNNING等)不僅在Console窗口顯示,也會寫入到Mycat-server項目根目錄上的eclipse_console.log的構建日志(自動創建文件)里。Console窗口的顯示范圍是有限的,構建信息很多的時候,通過查構建日志就能找回最近一次構建的所有信息,方便解決問題;此外,默認每次構建都會自動清空上一次的構建日志,也不用害怕無限占用磁盤空間。

編譯源代碼并構建jar包

最后我們點擊界面上的Run按鈕,Ecplise就會調用Maven,先清除可能的殘留文件,再構建MyCat 1.6的jar包。

構建Mycat-server還需要用到別的一些Maven插件和依賴包。第一次編譯,Maven還會進一步分析和下載這些依賴,所以這又是一個漫長的過程——比上一次下載用時要略短,但也得做好花費數十分鐘的準備。**但實際的編譯和構建用時其實很短,日后的構建和編譯不需要下載,那其實很快的。

構建完畢后,Ecplise的Console窗口會有如下顯示來提示構建工作完成。這時候到Mycat-server的解壓目錄里,會發現多了一個target目錄,打開里面,就能看到剛剛構建好的MyCat 1.6的jar包了。

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 56.375 s
[INFO] Finished at: 2017-06-01T10:35:34+08:00
[INFO] Final Memory: 38M/734M
[INFO] ------------------------------------------------------------------------
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,983評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,772評論 3 422
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,947評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,201評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,960評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,350評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,406評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,549評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,104評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,914評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,089評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,647評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,340評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,753評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,007評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,834評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,106評論 2 375

推薦閱讀更多精彩內容

  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,900評論 6 342
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,799評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,677評論 25 708
  • 一中的榕樹 達開的雕像 靜坐著你我 這 是離別的美吧 ...
    e040614704ea閱讀 107評論 0 0
  • 開始一個新的rotation 有點兒緊張 有點焦慮 原因是怕自己不夠好 那么集中精神努力做好 把注意力放在努力上 ...
    Chen少閱讀 271評論 0 0