IntelliJ IDEA 的Project structure能夠在File->Project structure中打開,同時,在新建項目是IDE通常用嚮導的方式讓你填寫Project structure相關內容。在說明如何填寫以前,先說說這些項都表明什麼,包含Project、module、library、artficat和facet。project就是這個工程,下面有不少module。這裏project和module的關係相似於Visual Studio中的解決方案和項目之間的關係,project對應於解決方案,module對應於項目(沒錯,就是這樣,project就是頂層,不要看英文翻譯)。library就是要包含的library,這個有點像VS裏的程序集的概念。artifact是打包用的,這是maven裏的概念,就是這個資源包含了哪些內容,當用package時,生成相應的jar或war,用instal(maven裏用於發佈資源)時,這個包會連同其它必要的文件(如.pom文件),最後放在repository(maven的倉庫)中。facet是爲了確認信息,好比源碼在哪裏放、相關資源(圖形等)在哪裏放、java web程序的root路徑等等。html
由於其它兩個都比較簡單,故略去,這裏主要來看module和artifact。java
首先來看module,以下圖所示,sources就是說這個module裏有什麼內容。右邊是根節點,通常就是這個module的名字,根節點下有一些預覽,說明了不一樣性質的內容放在哪裏。左邊顯示的是在右邊選中內容的預覽。web
Dependency就是管理這個module的依賴項,依賴項多是library包,也多是其它的mocule。這裏有個export選項,這個選項被選上了話,那麼說明:未來某一個module依賴本module的話,那麼被選中這個選項的項也會出如今那個module中。也就是說,有一個傳遞性。maven
接下來再看artifact。artifact就是對應的一個maven的artifact,一般是一個java包。而以下如紅色框1所示的是這個artifact的具體內容,你但願最終發佈什麼內容,就是在這設置的。內容的指定形式能夠多樣化,好比圖中的1.1紅框,它就是指得是52n-ses-core這個module的編譯輸出目錄的內容(也就是說源碼編譯後的全部字節碼),也就是後面一張圖顯示的;1.2紅框指得是52n-ses-core這個module的Facet的內容(facet就是上面的facet設置的內容)。這些內容能夠經過拖動的方式直接在紅框右邊的Available Elements列表中添加,這些內容多是library或者是"xxx"complie output等。spa
52n-ses-core這個module的編譯輸出目錄:翻譯
52n-ses-1.2.2這個artifact打包後的war:htm
「52n-ses-core」complie output輸出的內容,對照上圖能夠看到這些內容最後都被打包到了war的WEB-INF/classes下。blog