<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-126  評論-247  文章-5  trackbacks-0

    項目結構

    proj
      |
      |— proj-model
      |      |
      |      |— src
      |      |— pom (jar)
      |      |
      |
      |— proj-dao
      |      |
      |      |— src
      |      |— pom (jar)
      |      |
      |
      |— proj-service
      |      |
      |      |— src
      |      |— pom (jar)
      |      |
      |
      |— proj-web
      |      |
      |      |— src
      |      |— pom (war)
      |      |
      |
      |— pom.xml (pom)
      |

    這里的 proj 項目分了 4 個模塊,它們分別是:proj-model(數據模型層)、proj-dao(數據庫訪問層)、proj-service(業務邏輯層)、
    proj-web(頁面表現層)。下面我們來依次的來創建這幾個項目(確保你的 maven 環境已經配置好,以下是 window 環境的 cmd 終端操作) 。

    創建模塊項目

    01.創建 proj 項目
    mvn archetype:create -DgroupId=org.fanlychie -DartifactId=proj
     
    02.創建 proj-model 項目
    mvn archetype:create -DgroupId=org.fanlychie -DartifactId=proj-model
     
    03.創建 proj-dao 項目
    mvn archetype:create -DgroupId=org.fanlychie -DartifactId=proj-dao
     
    04.創建 proj-service 項目
    mvn archetype:create -DgroupId=org.fanlychie -DartifactId=proj-service
     
    05.創建 proj-web 項目
    mvn archetype:create -DgroupId=org.fanlychie -DartifactId=proj-web -DarchetypeArtifactId=maven-archetype-webapp
     
    06.將 proj-model、proj-dao、proj-service、proj-web 移動到 proj 目錄里
    for /r /d %i in (proj-*) do move %i proj
     
    07.刪除 proj/src 文件夾(proj 作為父模塊,不需要 src)
    rd /S /Q proj\src
     
    08.為 proj-web 創建 src/main/java 目錄
    mkdir proj\proj-web\src\main\java
     
    09.為 proj-web 創建 src/test/java 目錄
    mkdir proj\proj-web\src\test\java
     
    10.刪除 proj-model、proj-dao、proj-service、proj-web 項目 src/main/java 的源文件(忽略錯誤)
    for /r /d %i in (proj\proj-*) do rd /S /Q %i\src\main\java\org
     
    11.刪除 proj-model、proj-dao、proj-service、proj-web 項目 src/test/java 的源文件(忽略錯誤)
    for /r /d %i in (proj\proj-*) do rd /S /Q %i\src\test\java\org

    父模塊 proj/pom.xml 配置

    作為父模塊,packaging 類型必須是 pom
    <groupId>org.fanlychie</groupId>
    <artifactId>proj</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    聲明子模塊
    <modules>
      <module>proj-model</module>
      <module>proj-dao</module>
      <module>proj-service</module>
      <module>proj-web</module>
    </modules>
    在父模塊中可以通過 dependencyManagement 對依賴的包進行統一的管理
    <properties>
      <spring.version>4.1.5.RELEASE</spring.version>
    </properties>
    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-dao</artifactId>
          <version>${project.version}</version>
        </dependency>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-model</artifactId>
          <version>${project.version}</version>
        </dependency>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-service</artifactId>
          <version>${project.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>${spring.version}</version>
        </dependency>
      </dependencies>
    </dependencyManagement>
    配置完成之后,父模塊以及父模塊的子模塊不會引入任何的構件依賴,這只是為了讓子模塊能夠繼承得到這些配置,這樣做的好處是,在子模塊中只
    需要聲明 groupId 和 artifactId 不需要聲明 version 就能準確的獲取得到依賴的構件。這樣一來,不僅能夠使子模塊的依賴配置變得簡單,
    還能使項目范圍內所有依賴的構件的版本能夠得到統一,它們可以在父模塊中統一的來管理,這樣可以避免模塊之間由于版本不一致而引發的異常。
    你還可以在父模塊中通過 pluginManagement 來對依賴的插件進行統一的管理
    <build>
      <pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.2.8.v20150217</version>
          </plugin>
        </plugins>
      </pluginManagement>
    </build>
    proj/pom.xml 完整的配置:
    <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/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>org.fanlychie</groupId>
      <artifactId>proj</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>pom</packaging>
      <name>proj</name>
      <url>http://maven.apache.org</url>
      <properties>
        <spring.version>4.1.5.RELEASE</spring.version>
      </properties>
      <modules>
        <module>proj-model</module>
        <module>proj-dao</module>
        <module>proj-service</module>
        <module>proj-web</module>
      </modules>
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>org.fanlychie</groupId>
            <artifactId>proj-dao</artifactId>
            <version>${project.version}</version>
          </dependency>
          <dependency>
            <groupId>org.fanlychie</groupId>
            <artifactId>proj-model</artifactId>
            <version>${project.version}</version>
          </dependency>
          <dependency>
            <groupId>org.fanlychie</groupId>
            <artifactId>proj-service</artifactId>
            <version>${project.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
          </dependency>
        </dependencies>
      </dependencyManagement>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.eclipse.jetty</groupId>
              <artifactId>jetty-maven-plugin</artifactId>
              <version>9.2.8.v20150217</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>

    子模塊 proj-model/pom.xml 配置

    作為子模塊,需要在 pom.xml 中聲明其父模塊
    <parent>
      <groupId>org.fanlychie</groupId>
      <artifactId>proj</artifactId>
      <version>1.0-SNAPSHOT</version>
    </parent>
    GAV(groupId、artifactId、version)參考父模塊。
    maven 默認認為父模塊是在當前項目 pom.xml 所在的目錄的上一級目錄中,這里的 proj 項目結構設計符合這個規則。如果你的項目結構并不是
    這樣,你必須通過 <relativepath> 節點來指定你的父模塊 pom.xml 所在的路徑(默認是 <relativepath>../</relativepath>)。
    <parent>
      <groupId>org.fanlychie</groupId>
      <artifactId>proj</artifactId>
      <version>1.0-SNAPSHOT</version>
      <relativePath>../</relativePath>
    </parent>
    proj-model/pom.xml 完整配置:
    <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/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj</artifactId>
        <version>1.0-SNAPSHOT</version>
      </parent>
      <artifactId>proj-model</artifactId>
      <packaging>jar</packaging>
      <name>proj-model project</name>
      <url>http://maven.apache.org</url>
    </project>
    groupId 和 version 會從父模塊中繼承,在子模塊中不需要再配置。

    子模塊 proj-dao/pom.xml 配置

    為該模塊聲明 proj-model 的依賴,因為該模塊需要使用 proj-model 模塊中的數據模型
    <dependencies>
      <dependency>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj-model</artifactId>
      </dependency>
    </dependencies>
    proj-dao/pom.xml 完整配置:
    <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/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj</artifactId>
        <version>1.0-SNAPSHOT</version>
      </parent>
      <artifactId>proj-dao</artifactId>
      <packaging>jar</packaging>
      <name>proj-dao project</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-model</artifactId>
        </dependency>
      </dependencies>
    </project>

    子模塊 proj-service/pom.xml 配置

    為該模塊聲明 proj-model、proj-dao 模塊的依賴,因為該模塊需要使用 proj-model 中的數據模型和 proj-dao 中的數據庫訪問接口
    <dependencies>
      <dependency>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj-model</artifactId>
      </dependency>
      <dependency>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj-dao</artifactId>
      </dependency>
    </dependencies>
    proj-service/pom.xml 完整的配置:
    <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/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj</artifactId>
        <version>1.0-SNAPSHOT</version>
      </parent>
      <artifactId>proj-service</artifactId>
      <packaging>jar</packaging>
      <name>proj-service project</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-model</artifactId>
        </dependency>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-dao</artifactId>
        </dependency>
      </dependencies>
    </project>

    子模塊 proj-web/pom.xml 配置

    為該模塊聲明 proj-model、proj-service 的依賴,因為 proj-web 需要使用 proj-model 中的數據模型和 proj-service 中的業務邏輯
    <dependencies>
      <dependency>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj-model</artifactId>
      </dependency>
      <dependency>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj-service</artifactId>
      </dependency>
    </dependencies>
    proj-web/pom.xml 完整的配置:
    <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">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj</artifactId>
        <version>1.0-SNAPSHOT</version>
      </parent>
      <artifactId>proj-web</artifactId>
      <packaging>war</packaging>
      <name>proj-web project</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-model</artifactId>
        </dependency>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-service</artifactId>
        </dependency>
      </dependencies>
      <build>
        <finalName>proj-web</finalName>
      </build>
    </project>

    導入項目到 eclipse

    配置完成之后,接下來可以將項目導入到 eclipse,在 eclipse 中右鍵 --> Import --> Maven --> Existing Maven Projects,將 proj
    項目所在的路徑復制粘貼到 Root Directory 欄并敲回車,點擊 Finish 按鈕即可。

    導入后的項目結構

    示例源碼下載:proj.zip
    示例使用 jetty 作為 web 服務器,選中 proj-web --> 右鍵 --> Run As --> Maven build... --> Goals 欄輸入 jetty:run

    記得把 Resolve Workspace artifacts 選項勾選上,否則啟動時會報錯。訪問方式:http://localhost/info

    打包

    選中父模塊項目 proj --> 右鍵 --> Run As --> Maven build... --> Goals 欄輸入 clean package 并執行。
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Build Order:
    [INFO] 
    [INFO] proj
    [INFO] proj-model project
    [INFO] proj-dao project
    [INFO] proj-service project
    [INFO] proj-web project
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    . . . . . .
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Summary:
    [INFO] 
    [INFO] proj ............................................... SUCCESS [  0.002 s]
    [INFO] proj-model project ................................. SUCCESS [  1.100 s]
    [INFO] proj-dao project ................................... SUCCESS [  0.102 s]
    [INFO] proj-service project ............................... SUCCESS [  0.069 s]
    [INFO] proj-web project ................................... SUCCESS [  0.552 s]
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
     
    可以看到,maven 在 build 的時候,會根據模塊之間的依賴關系,整理出一個 build 的順序,然后再按順序來 build。
    執行完 package 后,各個子模塊的 target 目錄下會輸出相應的 JAR 或 WAR 包。


      
    posted on 2015-06-27 16:47 fancydeepin 閱讀(27895) 評論(0)  編輯  收藏 所屬分類: maven
    主站蜘蛛池模板: 四虎永久在线精品免费网址 | 可以免费看黄的网站| 亚洲中文字幕视频国产| 久久无码av亚洲精品色午夜| 免费人成视频在线| 亚洲依依成人亚洲社区| 在线视频免费观看www动漫| tom影院亚洲国产一区二区| 成人无遮挡裸免费视频在线观看| 亚洲嫩草影院在线观看| 猫咪社区免费资源在线观看| 亚洲一本到无码av中文字幕| 日本成人免费在线| 三级片免费观看久久| 亚洲日韩中文字幕日韩在线| 久久精品无码专区免费| 亚洲av中文无码乱人伦在线咪咕| 久久久精品午夜免费不卡| 亚洲视频免费在线播放| 免费a级毛片无码a∨蜜芽试看| 亚洲av日韩精品久久久久久a| 亚洲国产人成精品| 久久久精品国产亚洲成人满18免费网站 | 亚洲性线免费观看视频成熟| 四虎免费大片aⅴ入口| 黄色三级三级三级免费看| 亚洲日本一区二区三区在线| 久久成人免费播放网站| 亚洲精品人成网在线播放影院| 国产免费观看黄AV片| 99在线免费观看| 麻豆狠色伊人亚洲综合网站 | 亚洲激情中文字幕| 妞干网免费视频在线观看| a毛片成人免费全部播放| 91大神亚洲影视在线| 国产在线19禁免费观看| 久久久久国色av免费看| 亚洲另类无码专区丝袜| 亚洲成a人片在线观看无码| a级毛片无码免费真人|