1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        理解 IntelliJ IDEA 的項(xiàng)目配置和 Web 部署

        共 2775字,需瀏覽 6分鐘

         ·

        2022-02-26 20:38

        作者:Dulk

        www.cnblogs.com/deng-cc/p/6416332.html

        大家好,我是寶哥


        1、項(xiàng)目配置的理解


        IDEA 中最重要的各種設(shè)置項(xiàng),就是這個(gè) Project Structre 了,關(guān)乎你的項(xiàng)目運(yùn)行,缺胳膊少腿都不行。最近公司正好也是用之前自己比較熟悉的IDEA而不是Eclipse,為了更深入理解和使用,就找來(lái)各種資料再研究一下,這里整理后來(lái)個(gè)輸出。



        1.1 Project



        1. Project name:定義項(xiàng)目的名稱;

        2. Project SDK:設(shè)置該項(xiàng)目使用的JDK,也可以在此處新添加其他版本的JDK;

        3. Project language level:這個(gè)和JDK的類似,區(qū)別在于,假如你設(shè)置了JDK1.8,卻只用到1.6的特性,那么這里可以設(shè)置語(yǔ)言等級(jí)為1.6,這個(gè)是限定項(xiàng)目編譯檢查時(shí)最低要求的JDK特性;

        4. Project compiler output:項(xiàng)目中的默認(rèn)編譯輸出總目錄,如圖黃色部分,實(shí)際上每個(gè)模塊可以自己設(shè)置特殊的輸出目錄(Modules - (project) - Paths - Use module compile output path),所以這個(gè)設(shè)置有點(diǎn)雞肋。


        1.2 Modules



        1.2.1 增刪子項(xiàng)目



        一個(gè)項(xiàng)目中可以有多個(gè)子項(xiàng)目,每個(gè)子項(xiàng)目相當(dāng)于一個(gè)模塊。一般我們項(xiàng)目只是單獨(dú)的一個(gè),IntelliJ IDEA 默認(rèn)也是單子項(xiàng)目的形式,所以只需要配置一個(gè)模塊。

        (此處的兩個(gè)項(xiàng)目引入僅作示例參考)


        1.2.2 子項(xiàng)目配置


        每個(gè)子項(xiàng)目都對(duì)應(yīng)了Sources、Paths、Dependencies 三大配置選項(xiàng):


        1. Sources:顯示項(xiàng)目的目錄資源,那些是項(xiàng)目部署的時(shí)候需要的目錄,不同顏色代表不同的類型;

        2. Paths:可以指定項(xiàng)目的編譯輸出目錄,即項(xiàng)目類和測(cè)試類的編譯輸出地址(替換掉了Project的默認(rèn)輸出地址)

        3. Dependencies:項(xiàng)目的依賴





        1.2.3 增刪框架(Web部署-1)


        每個(gè)子項(xiàng)目之下都可以定義它所使用的框架,這里重點(diǎn)說(shuō)明一下Web部分的設(shè)置。



        1.3 Libraries


        這里可以顯示所添加的jar包,同時(shí)也可以添加jar包,并且可以把多個(gè)jar放在一個(gè)組里面,類似于jar包整理。


        這里默認(rèn)將每個(gè)jar包做為了一個(gè)單獨(dú)的組(未測(cè)試,待定)。


        1.4 Facets


        官方的解釋是:

        When you select a framework (a facet) in the element selector pane, the settings for the framework are shown in the right-hand part of the dialog.


        (當(dāng)你在左邊選擇面板點(diǎn)擊某個(gè)技術(shù)框架,右邊將會(huì)顯示這個(gè)框架的一些設(shè)置)


        說(shuō)實(shí)話,并沒(méi)有感覺(jué)到有什么作用。


        1.5 Artifacts(Web部署-2)


        項(xiàng)目的打包部署設(shè)置,這個(gè)是項(xiàng)目配置里面比較關(guān)鍵的地方,重點(diǎn)說(shuō)一下。


        先理解下它的含義,來(lái)看看官方定義的artifacts:

        An artifact is an assembly of your project assets that you put together to test, deploy or distribute your software solution or its part. Examples are a collection of compiled Java classes or a Java application packaged in a Java archive, a Web application as a directory structure or a Web application archive, etc.


        即編譯后的Java類,Web資源等的整合,用以測(cè)試、部署等工作。再白話一點(diǎn),就是說(shuō)某個(gè)module要如何打包,例如war exploded、war、jar、ear等等這種打包形式。某個(gè)module有了 Artifacts 就可以部署到應(yīng)用服務(wù)器中了。


        jar:Java ARchive,通常用于聚合大量的Java類文件、相關(guān)的元數(shù)據(jù)和資源(文本、圖片等)文件到一個(gè)文件,以便分發(fā)Java平臺(tái)應(yīng)用軟件或庫(kù);

        war:Web application ARchive,一種JAR文件,其中包含用來(lái)分發(fā)的JSP、Java Servlet、Java類、XML文件、標(biāo)簽庫(kù)、靜態(tài)網(wǎng)頁(yè)(HTML和相關(guān)文件),以及構(gòu)成Web應(yīng)用程序的其他資源;

        exploded:在這里你可以理解為展開(kāi),不壓縮的意思。也就是war、jar等產(chǎn)出物沒(méi)壓縮前的目錄結(jié)構(gòu)。建議在開(kāi)發(fā)的時(shí)候使用這種模式,便于修改了文件的效果立刻顯現(xiàn)出來(lái)。


        默認(rèn)情況下,IDEA的 Modules 和 Artifacts 的 output目錄已經(jīng)設(shè)置好了,不需要更改,打成war包的時(shí)候會(huì)自動(dòng)在 WEB-INF目錄下生成classes,然后把編譯后的文件放進(jìn)去。



        你可能對(duì)這里的輸出目錄不太理解,之前不是配置過(guò)了文件編譯的輸出目錄了嗎?為什么這里還有一個(gè)整合這些資源的目錄呢?它又做了哪些事呢? 


        其實(shí),實(shí)際上,當(dāng)你點(diǎn)擊運(yùn)行tomcat時(shí),默認(rèn)就開(kāi)始做以下事情:


        • 編譯,IDEA在保存/自動(dòng)保存后不會(huì)做編譯,不像Eclipse的保存即編譯,因此在運(yùn)行server前會(huì)做一次編譯。編譯后class文件存放在指定的項(xiàng)目編譯輸出目錄下(見(jiàn)1.2.2);

        • 根據(jù)artifact中的設(shè)定對(duì)目錄結(jié)構(gòu)進(jìn)行創(chuàng)建;

        • 拷貝web資源的根目錄下的所有文件到artifact的目錄下(見(jiàn)1.2.3);

        • 拷貝編譯輸出目錄下的classes目錄到artifact下的WEB-INF下(見(jiàn)1.2.2);

        • 拷貝lib目錄下所需的jar包到artifact下的WEB_INF下;

        • 運(yùn)行server,運(yùn)行成功后,如有需要,會(huì)自動(dòng)打開(kāi)瀏覽器訪問(wèn)指定url。


        在這里還要注意的是,配置完成的artifact,需要在tomcat中進(jìn)行添加:


        往期推薦

        騷操作:不重啟 JVM,如何替換掉已經(jīng)加載的類?

        國(guó)產(chǎn)Linux發(fā)行版再添一員,操作界面不輸蘋果!

        SpringCloud 微服務(wù)架構(gòu),適合接私活(附源碼)

        Redis主從復(fù)制、集群、持久化、事故調(diào)優(yōu)…你懂幾條?

        你還在 Docker 中跑 MySQL?恭喜你,可以下崗了!

        從零開(kāi)始搭建公司搜索平臺(tái)架構(gòu)技術(shù)棧(基于 ElasticSearch),這套架構(gòu)絕了!

        瀏覽 20
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            爱操人妻| 鸡巴搞逼 | 免费看男男gay啪啪网站3d | 福利在线视频导航 | 性爱福利社 | 女女大尺度做爰啪啪 | www.91b1在线偷拍 | 吃奶大尺度无遮挡激情做爰 | 美女成人视频 | 秋霞在线99三级 |