IntelliJ和tomcat中的目錄結構
IntelliJ的官網幫助中心:
http://www.jetbrains.com/idea/webhelp/getting-help.html
project和module:
1、通過 .idea 下的modules.xml文件進行modules的管理,定義了module對應的iml文件,定義了iml文件的filepath和fileurl,通過iml文件加載module,如果修改了iml文件的filepath和fileurl,則定位不到iml,無法正確加載module。
當創建project時,其實也就默認創建了一個parent module,一個project下可以包含多個module(childmodule),childmodule會在下一級的目錄中創建。
PhildeMacBook-Pro:IdeaProjects Phil$ ls
JavaWeb TestProject firstAngularJS weixin
PhildeMacBook-Pro:IdeaProjects Phil$ cd TestProject/
PhildeMacBook-Pro:TestProject Phil$ ls
ChildModule TestProject.iml out src web
.idea:一般是project的配置文件和配置信息,指定了artifact的位置,指定了項目中包含的modules(modules.xml文件);
out:則是打包成war的發布包artifact;war下面,一般包含一個index.jsp文件,WEB-INF目錄,WEB-INF目錄下包含web.xml配置文件、classes(編譯成.class的java類)和lib文件夾(其它依賴的jar包等);
src:是project的原始文件,一般項目的java文件等都需要放在此目錄下,可以在src目錄中創建package,放各種java class類;
web:相當於webroot目錄,是根據src生成.class二進制文件,是web application的主目錄,包括index.jsp,WEB-INF目錄,WEB-INF目錄下包含web.xml配置文件、classes(編譯成.class的二進制文件)和lib文件夾(其它依賴的jar包等);項目所需要的資源,比如jsp頁面,image等,都可以放在web目錄下。
.iml文件,module的對應文件;
External Libraries:主要包括tomcat和jdk的引用jar文件;
編譯發布的一般過程為:
1、make:將java文件編譯(compile)成.class二進制文件;
2、build成artifact:將class文件build成war包;
3、deploy:部署,選擇artifact部署發布到tomcat服務器中。
可以向一個project中添加多個子modules,這些module可以也是web application,可以同時進行make,bulid,同時deploy到tomcat中,只需要注意在tomcat中的相對位置區分開即可。如下所示:
tomcat可以通過相同的IP、端口,同時發布不同的web應用,效果如下:
關於output目錄:
IntelliJ在build成artifact(war)時,可以選擇output directory:
直接output到tomcat中,這樣當IntelliJ 關閉時,也可以直接訪問發布到tomcat中的web應用,例如:
/Users/Phil/Documents/DevOps/tomcat/apache-tomcat-9.0.0.M10/webapps/JavaWeb/out/artifacts/JavaWeb_war_exploded
如果這樣,則在tomcat的webapps目錄下,就可以生成web項目的文件夾,如下:
/Users/Phil/Documents/DevOps/tomcat/apache-tomcat-9.0.0.M10/webapps/JavaWeb/
默認是output到project所在工程下的out文件夾中,在tomcat的webapps下並不生成相關文件夾,而是tomcat重定向到此artifact。這樣也比較合理,畢竟開發機只是調試;實際部署時,還是需要將war遠程cp到生產服務器的tomcat中。
