天天看點

Maven學習總結7 -- 建立一個多子產品的項目

建立一個多子產品的項目

      • 1.設計
      • 2.項目建立
          • 父項目的建立
          • model層/dao層/service層的建立
          • web層的建立
      • 3.打包
      • 4.項目部署到tomcat伺服器
          • 将war包複制到tomcat安裝目錄的webapps目錄下
          • 跳轉到tomcat源目錄下的bin目錄下,啟動startup.bat
          • 通路該項目
      • 5.導入idea中進行開發

1.設計

首先是設計工作,目前的項目架構的搭建通常要用到分層思想,我目前接觸的java-web項目一般将項目分為model(域模型層)、dao(資料通路層),service(業務邏輯層),web(視圖層)。分層思想使得各層之間的職責明确,利于管理和維護。

2.項目建立

我們使用maven指令的方式來建立項目(不清楚的可以參考: https://blog.csdn.net/weixin_43740223/article/details/89477815)

父項目的建立

跳轉到我們要建立項目的目錄,并執行

mvn archetype:generate -DgroupId=com.demo -DartifactId=demo-parent -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false -DarchetypeCatalog=internal
           
Maven學習總結7 -- 建立一個多子產品的項目

建立成功,由于這個項目是作為父項和聚合器的,我們可以把src檔案夾删除

maven自動生成的pom檔案,修改為如下

<?xml version="1.0" encoding="UTF-8"?>

<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>com.demo</groupId>
  <artifactId>demo-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--将打包類型改為pom -->
  <packaging>pom</packaging>

  <name>demo-parent</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
  
  <!--添加dependencyManagement标簽包圍 -->
	<dependencyManagement>
	  <dependencies>
	    <dependency>
	      <groupId>junit</groupId>
	      <artifactId>junit</artifactId>
	      <version>4.11</version>
	      <scope>test</scope>
	    </dependency>
	  </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>
           
model層/dao層/service層的建立

在父項目路徑下,執行如下指令:

mvn archetype:generate -DgroupId=com.demo -DartifactId=demo-model -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false -DarchetypeCatalog=internal
           

指令成功,父項目目錄下多了一個demo-model的項目。

Maven學習總結7 -- 建立一個多子產品的項目

進入demo-model,可以看到目錄結構如下。

Maven學習總結7 -- 建立一個多子產品的項目

我們再次檢視父項目的pom檔案,發現maven自動添加了一個子產品

Maven學習總結7 -- 建立一個多子產品的項目

修改demo-model項目的pom檔案如下

<?xml version="1.0" encoding="UTF-8"?>
<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>
  
  <!--maven自動添加了父類标簽,并指向demo-parent -->
  <parent>
    <artifactId>demo-parent</artifactId>
    <groupId>com.demo</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  
  

  <!--groupId将繼承自父項,可以不寫 -->
  <!--<groupId>com.demo</groupId>-->
  
  <artifactId>demo-model</artifactId>
  
  <!--version将繼承自父項,可以不寫 -->
  <!--<version>1.0-SNAPSHOT</version>-->
  
  <!--添加打包類型,設定為jar -->
  <packaging>jar</packaging>

  <name>demo-model</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <!--properties将繼承自父項,如無特殊定制,則去除 
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
  -->

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
	  
	  <!-- 該依賴父類已有定義版本和範圍,去除版本和範圍
      <version>4.11</version>
      <scope>test</scope> 
	  -->
    </dependency>
  </dependencies>

  <!-- 子項目使用繼承自super pom 預設的插件配置即可
  <build>
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  -->
</project>

           

依次配置,依次建立 demo-dao,demo-service。

檔案結構如下

D:\ideaProject\demo\demo-parent>tree /f
檔案夾 PATH 清單
卷序列号為 4E5B-BFB0
D:.
│  pom.xml
│
├─demo-dao
│  │  pom.xml
│  │
│  └─src
│      ├─main
│      │  └─java
│      │      └─com
│      │          └─demo
│      │                  App.java
│      │
│      ├─site
│      │      site.xml
│      │
│      └─test
│          └─java
│              └─com
│                  └─demo
│                          AppTest.java
│
├─demo-model
│  │  pom.xml
│  │
│  └─src
│      ├─main
│      │  └─java
│      │      └─com
│      │          └─demo
│      │                  App.java
│      │
│      └─test
│          └─java
│              └─com
│                  └─demo
│                          AppTest.java
│
└─demo-service
    │  pom.xml
    │
    └─src
        ├─main
        │  └─java
        │      └─com
        │          └─demo
        │                  App.java
        │
        └─test
            └─java
                └─com
                    └─demo
                            AppTest.java
           
web層的建立

最後是建立web層。web層需要将archetype 指定為 maven-archetype-webapp 指令如下

mvn archetype:generate -DgroupId=com.demo -DartifactId=demo-web -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4 -DinteractiveMode=false -DarchetypeCatalog=internal
           

建立完成後

Maven學習總結7 -- 建立一個多子產品的項目

進入該檔案夾,

D:\ideaProject\demo\demo-parent>cd demo-web

D:\ideaProject\demo\demo-parent\demo-web>tree /f
檔案夾 PATH 清單
卷序列号為 4E5B-BFB0
D:.
│  pom.xml
│
└─src
    └─main
        └─webapp
            │  index.jsp
            │
            └─WEB-INF
                    web.xml
           

可以看到web項目與普通項目生成的目錄結構是不相同的。我們再檢視一下web項目的pom檔案。

暫時修改為如下。

<?xml version="1.0" encoding="UTF-8"?>
<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>
    <artifactId>demo-parent</artifactId>
    <groupId>com.demo</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>

  <artifactId>demo-web</artifactId>
  <packaging>war</packaging>

  <name>demo-web Maven Webapp</name>
  <url>http://www.example.com</url>


  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
  </dependencies>

  <build>
    <finalName>demo-web</finalName>
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
  </build>
</project>
           

我們注意到web項目下有個index.jsp.

Maven學習總結7 -- 建立一個多子產品的項目

到這裡,我們的項目已經簡單的搭建完畢了。

3.打包

我們檢視一下父項目的pom檔案

<modules>
    <module>demo-model</module>
    <module>demo-dao</module>
    <module>demo-service</module>
    <module>demo-web</module>
  </modules>
           

maven已經自動的将幾個項目組成子產品清單了

接下來我們來測試一下使用多子產品 是否能夠直接将這四個項目打包

跳轉到父項目路徑下,執行

mvn package
           
Maven學習總結7 -- 建立一個多子產品的項目

執行成功

Maven學習總結7 -- 建立一個多子產品的項目

由于java-web項目以war的形式生成war包來運作整個項目,我們檢視web項目目錄,在web項目target目錄下生成了一個war 包。内含我們這個多子產品項目的輸出内容。我們把該war包部署到本地的tomcat伺服器上。

4.項目部署到tomcat伺服器

将war包複制到tomcat安裝目錄的webapps目錄下
Maven學習總結7 -- 建立一個多子產品的項目
跳轉到tomcat源目錄下的bin目錄下,啟動startup.bat
Maven學習總結7 -- 建立一個多子產品的項目
通路該項目

啟動成功後,檢視webapps下的demo-web目錄

Maven學習總結7 -- 建立一個多子產品的項目

依據相對路徑輸入路徑 localhost:8081/demo-web/index.jsp

Maven學習總結7 -- 建立一個多子產品的項目

大功告成!

5.導入idea中進行開發

1.打開idea,點選import project

Maven學習總結7 -- 建立一個多子產品的項目

2.點選父項目下的pom.xml,點選ok

Maven學習總結7 -- 建立一個多子產品的項目

3.一路next後點選finish

Maven學習總結7 -- 建立一個多子產品的項目

4.導入成功後如圖,可以開始開發了。

Maven學習總結7 -- 建立一個多子產品的項目

繼續閱讀