IntelliJ IDEA 12.0搭建Maven Web SSH2架構項目示例(二)

Yangcl 10年前發布 | 57K 次閱讀 Kryo




3.引入一個現有的Maven-web-application項目</b></span>
引入Maven項目和普通的web項目有所不同,如果你通過【File】->【Import Project】的方式來引入一個Maven-web項目的話,其結構項目目錄結構會出現混亂。正確的方式如下圖:

</span>


這樣才是引入一個已經存在的maven-web項目的正確方式,小小的注意點。




4.環境配置與執行調試;
    針對一個項目的運行、編譯和調試,首先我們引入一個項目,如上兩幅圖所示,然后用Maven進行編譯,如下圖所示按住Ctrl鍵選擇clean 和 install兩個選項,然后執行:


這是Run控制臺執行成功的結果,代表編譯成功。


第二步,添加Tomcat服務,如下圖:


選擇Tomcat安裝路徑:


第三步,部署 war包,如下圖:


因為是調試,所以選擇 FrameModel:war exploded。在你真正發布的程序中是 FrameModel:war這個包,注意分清。然后,進行Debug,如下圖:


調試成功后,控制臺結果如下:



</span>
5.Maven-web-application項目核心文件:pom.xml文件的結構分析
    OK,重頭戲開始,Maven的pom.xml文件。pom文件定義了你項目中所有的第三方依賴和編譯行為。這里給出一個簡單的例子,要注意的地方在代碼中都已經指出,代碼如下:
</span>
[html] view plaincopy在CODE上查看代碼片派生到我的代碼片
</div> </div>

  1. <span style="font-family:SimSun;"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  2.     <modelVersion>4.0.0</modelVersion>  
  3.     <groupId>com.Yangcl.org</groupId>  
  4.     <artifactId>FrameModel</artifactId>  
  5.     <packaging>war</packaging>  <!--這里定義了你項目的打包方式,有war/bundle等-->
  6.     <name>FrameModel</name>  
  7.     <version>1.0.0-SNAPSHOT</version> <!--證明這是一個快照版本-->  
  8.   
  9.     <properties>  <!--為pom定義一些常量,在pom中的其它地方可以直接引用-->
  10.         <spring.version>3.1.1.RELEASE</spring.version>  
  11.         <struts.version>2.3.4</struts.version>  
  12.         <hibernate.version>3.6.9.Final</hibernate.version>  
  13.         <axis2.version>1.6.2</axis2.version>  
  14.         <mysql.version>5.1.9</mysql.version>  
  15.         <aspectj.version>1.6.9</aspectj.version>  
  16.         <slf4j.version>1.6.4</slf4j.version>  
  17.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  18.     </properties>  
  19.   
  20.     <!-- 一個項目所依賴的全部Jar文件信息定義描述,這里不一一列出-->  
  21.     <dependencies>  
  22.         <dependency>  
  23.             <groupId>org.springframework</groupId>  
  24.             <artifactId>spring-core</artifactId>  
  25.             <version>${spring.version}</version>  
  26.         </dependency>  
  27.         <dependency>  
  28.             <groupId>org.springframework</groupId>  
  29.             <artifactId>spring-web</artifactId>  
  30.             <version>${spring.version}</version>  
  31.         </dependency>  
  32.         <dependency>  
  33.             <groupId>org.springframework</groupId>  
  34.             <artifactId>spring-beans</artifactId>  
  35.             <version>${spring.version}</version>  
  36.         </dependency>  
  37.         <dependency>  
  38.             <groupId>org.springframework</groupId>  
  39.             <artifactId>spring-tx</artifactId>  
  40.             <version>${spring.version}</version>  
  41.         </dependency>  
  42.     </dependencies>  
  43.   
  44.     <!--針對一個項目的編譯環節-->  
  45.     <build>  
  46.         <!--finalName 屬性是你項目的名字-->  
  47.         <finalName>FrameModel</finalName>  
  48.         <plugins>  
  49.   
  50.             <!--編譯操作的定義-->  
  51.             <plugin>  
  52.                 <groupId>org.apache.maven.plugins</groupId>  
  53.                 <artifactId>maven-compiler-plugin</artifactId>  
  54.                 <version>2.3.2</version>  
  55.                 <configuration>  
  56.                     <source>1.6</source>  
  57.                     <target>1.6</target>  
  58.                 </configuration>  
  59.             </plugin>  
  60.   
  61.             <!--Maven的打包部署與Debug行為描述-->  
  62.             <plugin>  
  63.                 <artifactId>maven-war-plugin</artifactId>  
  64.                 <version>2.1.1</version>  
  65.                 <configuration>      <!-- 有這個定義,則你調試的時候不會進入target目錄下,你就不用總去重啟服務,尤其在頁面調試的時候很方便 -->  
  66.                     <webappDirectory>${basedir}/src/main/webapp</webappDirectory>  
  67.                     <warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>  
  68.                 </configuration>  
  69.             </plugin>  
  70.   
  71.             <!--maven-surefire-plugin支持JUnit和TestNG--> 
                <!--默認情況下,maven-surefire-plugin的test目標會自動執行測試源碼--> 
                <!--路徑下所有以Test開頭、Test或TestCase結尾的的Java類。-->  
  72.             <plugin>  
  73.                 <groupId>org.apache.maven.plugins</groupId>  
  74.                 <artifactId>maven-surefire-plugin</artifactId>  
  75.                 <version>2.7.1</version>  
  76.                 <configuration>  
  77.                     <skipTests>true</skipTests> <!--這里選擇跳過測試> 
  78.                 </configuration>  
  79.             </plugin>  
  80.   
  81.             <!--Maven Clean 操作-->  
  82.             <plugin>  
  83.                 <groupId>org.apache.maven.plugins</groupId>  
  84.                 <artifactId>maven-clean-plugin</artifactId>  
  85.                 <version>2.4.1</version>  
  86.                 <configuration>  
  87.                     <filesets>  
  88.                         <fileset>  
  89.                             <directory>${basedir}/src/main/webapp/WEB-INF/</directory>  
  90.                             <excludes>      <!--排除哪些內容不被清除-->  
  91.                                 <excluse>**/web.xml</excluse>  
  92.                             </excludes>  
  93.                         </fileset>  
  94.                     </filesets>  
  95.                 </configuration>  
  96.             </plugin>  
  97.   
  98.         </plugins>  
  99.     </build>  
  100. </project>  
  101. </ol> </div>
       OK,到現在為止,Maven-web-application的所有實現、調試、細節和原理基本都已經介紹完畢。這里順便點評一下幾個主流的IDE:Eclipse、MyEclipse和IntelliJ IDEA。這三個編輯器里我個人覺得最好用的還是IDEA,畢竟是收費的軟件,用戶體驗就是高。MyEclipse明顯有些臃腫,而且針對ExtJS4.0以上的版本,他支持的不好,即使在調節和優化了以后,也還是會出現內存溢出的問題;你可能會說是你自己不會用,我的怎么就沒事呢?那是因為你遇到的項目小。同樣在對 Maven 的支持上,Eclipse也明顯沒有 IDEA 做的好。以前閑來無事,還特意探究了下這兩個IDE的插件機制,我發現IDEA的插件機制和Eclipse、MyEclipse區別還是很大,雖然思想都是基于OSGI。我個人覺得 IDEA 十分適合開發Web程序,尤其是Maven Web程序。o(︶︿︶)o 唉...好累,為了改這篇博客我重新裝了一個空白的虛擬機,希望能對大家有所幫助吧,下面給大家兩個鏈接,都是做好的Maven web程序,自己可以試一試。</span>






    如果您有什么高見,歡迎給我留言,咱們可以交流下,共同進步!




 本文由用戶 Yangcl 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!