建立一個多子產品的項目
-
-
- 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
建立成功,由于這個項目是作為父項和聚合器的,我們可以把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的項目。
進入demo-model,可以看到目錄結構如下。
我們再次檢視父項目的pom檔案,發現maven自動添加了一個子產品
修改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
建立完成後
進入該檔案夾,
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.
到這裡,我們的項目已經簡單的搭建完畢了。
3.打包
我們檢視一下父項目的pom檔案
<modules>
<module>demo-model</module>
<module>demo-dao</module>
<module>demo-service</module>
<module>demo-web</module>
</modules>
maven已經自動的将幾個項目組成子產品清單了
接下來我們來測試一下使用多子產品 是否能夠直接将這四個項目打包
跳轉到父項目路徑下,執行
mvn package
執行成功
由于java-web項目以war的形式生成war包來運作整個項目,我們檢視web項目目錄,在web項目target目錄下生成了一個war 包。内含我們這個多子產品項目的輸出内容。我們把該war包部署到本地的tomcat伺服器上。
4.項目部署到tomcat伺服器
将war包複制到tomcat安裝目錄的webapps目錄下
跳轉到tomcat源目錄下的bin目錄下,啟動startup.bat
通路該項目
啟動成功後,檢視webapps下的demo-web目錄
依據相對路徑輸入路徑 localhost:8081/demo-web/index.jsp
大功告成!
5.導入idea中進行開發
1.打開idea,點選import project
2.點選父項目下的pom.xml,點選ok
3.一路next後點選finish
4.導入成功後如圖,可以開始開發了。