精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

閑扯Maven項目代碼組織形式

開發 項目管理
如果使用這種操作流程,需要注意一點,就是每個模塊代碼更新之后,要及時安裝到本地倉庫,否則當 web 模塊獨立打包時,用到的其他模塊就不是最新的代碼。

[[428059]]

1. 代碼組織形式

  • 1.1 平鋪
  • 1.2 父子結構

2. 打包問題

  • 2.1 繼承
  • 2.2 聚合

3. 小結

因為最近有小伙伴問到了,所以我想和大家隨便扯扯 Maven 項目中代碼的組織形式這個問題。

其實也不是啥大問題,但是如果不懂的話,就像霧里看花,始終不能看的明明白白,懂了就像一層窗戶紙,捅破就好了。

所以我們就簡單扯幾句。

1. 代碼組織形式

首先來說說代碼組織形式。

一般來說,就兩種比較常見的形式:

  • 平鋪
  • 父子結構

這兩種形式松哥在不同的項目中都有遇到過,所以我們就不說孰優孰劣,單純來說這兩種方案。

1.1 平鋪

平鋪的代碼類似下面這樣:

  1. ├── parent 
  2. │   ├── pom.xml 
  3. │   └── src 
  4. │       ├── main 
  5. │       │   ├── java 
  6. │       │   └── resources 
  7. │       └── test 
  8. │           └── java 
  9. ├── vhr-dao 
  10. │   ├── pom.xml 
  11. │   ├── src 
  12. │   │   ├── main 
  13. │   │   │   ├── java 
  14. │   │   │   └── resources 
  15. │   │   └── test 
  16. │   │       └── java 
  17. └── vhr-service 
  18.     ├── pom.xml 
  19.     ├── src 
  20.     │   ├── main 
  21.     │   │   ├── java 
  22.     │   │   └── resources 
  23.     │   └── test 
  24.     │       └── java 

如下圖:

可以看到,在這種結構下,parent 父工程和各個子工程從代碼組織形式上來看都是平級的,都處于同一個目錄下。

不過仔細查看 pom.xml 文件,還是能夠清晰的看到這三個 module 的父子關系的:

parent:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" 
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
  5.     <modelVersion>4.0.0</modelVersion> 
  6.  
  7.     <groupId>org.javaboy</groupId> 
  8.     <artifactId>parent</artifactId> 
  9.     <packaging>pom</packaging> 
  10.     <version>1.0-SNAPSHOT</version> 
  11.     <modules> 
  12.         <module>../vhr-dao</module> 
  13.         <module>../vhr-service</module> 
  14.     </modules> 
  15.  
  16. </project> 

 

可以看到,在指定 module 時,由于 vhr-dao 和 vhr-service 和 parent 的 pom.xml 不在同一個目錄下,所以這里使用了相對路徑,相對路徑的參考依據是 parent 的 pom.xml 文件位置。

vhr-dao:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" 
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
  5.     <parent> 
  6.         <artifactId>parent</artifactId> 
  7.         <groupId>org.javaboy</groupId> 
  8.         <version>1.0-SNAPSHOT</version> 
  9.         <relativePath>../parent/pom.xml</relativePath> 
  10.     </parent> 
  11.     <modelVersion>4.0.0</modelVersion> 
  12.  
  13.     <artifactId>vhr-dao</artifactId> 
  14.  
  15.  
  16. </project> 

可以看到,relativePath 節點中,通過相對路徑指定了 parent 的 pom.xml 文件位置,這個相對路徑的參考依據是子模塊的 pom.xml 文件。

vhr-service:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" 
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
  5.     <parent> 
  6.         <artifactId>parent</artifactId> 
  7.         <groupId>org.javaboy</groupId> 
  8.         <version>1.0-SNAPSHOT</version> 
  9.         <relativePath>../parent/pom.xml</relativePath> 
  10.     </parent> 
  11.     <modelVersion>4.0.0</modelVersion> 
  12.  
  13.     <artifactId>vhr-service</artifactId> 
  14.  
  15.  
  16. </project> 

這個和 vhr-dao 的差不多,不贅述。

1.2 父子結構

父子結構則類似于下面這樣:

  1. ├── maven_parent 
  2. │   ├── pom.xml 
  3. │   ├── vhr-dao 
  4. │   │   ├── pom.xml 
  5. │   │   └── src 
  6. │   │       ├── main 
  7. │   │       │   ├── java 
  8. │   │       │   └── resources 
  9. │   │       └── test 
  10. │   │           └── java 
  11. │   └── vhr-service 
  12. │       ├── pom.xml 
  13. │       └── src 
  14. │           ├── main 
  15. │           │   ├── java 
  16. │           │   └── resources 
  17. │           └── test 
  18. │               └── java 

如下圖:

這種父子結構的看起來就非常的層次分明了,parent 和各個 module 一眼就能看出來,我們從 GitHub 上下載的很多開源項目如 Shiro,都是這種結構。

不過文件夾的層級并不能說明任何問題,關鍵還是要看 pom.xml 中的定義,接下來我們就來看看 parent 的 pom.xml 和各個子模塊的 pom.xml 有何異同。

maven_parent:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" 
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
  5.     <modelVersion>4.0.0</modelVersion> 
  6.  
  7.     <groupId>org.javaboy</groupId> 
  8.     <artifactId>maven_parent</artifactId> 
  9.     <packaging>pom</packaging> 
  10.     <version>1.0-SNAPSHOT</version> 
  11.     <modules> 
  12.         <module>vhr-dao</module> 
  13.         <module>vhr-service</module> 
  14.     </modules> 
  15.  
  16.  
  17. </project> 

 

 

和前面不同的是,這里聲明 modules 不需要相對路徑了(其實還是相對路徑,只是不需要 ../ 了),因為各個子模塊和 parent 的 pom.xml 文件處于同一目錄下。

vhr-dao:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" 
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
  5.     <parent> 
  6.         <artifactId>maven_parent</artifactId> 
  7.         <groupId>org.javaboy</groupId> 
  8.         <version>1.0-SNAPSHOT</version> 
  9.     </parent> 
  10.     <modelVersion>4.0.0</modelVersion> 
  11.  
  12.     <artifactId>vhr-dao</artifactId> 
  13.  
  14.  
  15. </project> 

 

這里也不需要通過 relativePath 節點去指定 parent 的 pom.xml 文件位置了,因為 parent 的 pom.xml 和各個子模塊處于同一目錄下。

vhr-service:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" 
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
  5.     <parent> 
  6.         <artifactId>maven_parent</artifactId> 
  7.         <groupId>org.javaboy</groupId> 
  8.         <version>1.0-SNAPSHOT</version> 
  9.     </parent> 
  10.     <modelVersion>4.0.0</modelVersion> 
  11.  
  12.     <artifactId>vhr-service</artifactId> 
  13.  
  14.  
  15. </project> 

 

2. 打包問題

2.1 繼承

有的時候,單純只是想通過 parent 來統一管理不同的項目的依賴,并非一個聚合項目。

這個時候只需要去掉 parent 的 pom.xml 中的 modules 節點及其中的內容即可,這樣就不是聚合工程了,各個子模塊也可以獨立打包。

2.2 聚合

當然很多情況我們是聚合工程。

聚合工程的話,一般松哥是建議大家從 parent 處統一進行打包:

這樣可以確保打包到的是最新的代碼。

當然還有另外一種操作流程:

  1. 首先將 parent 安裝到本地倉庫。
  2. 然后分別將 model、dao 以及 service 等模塊安裝到本地倉庫。
  3. 最后 web 模塊就可以獨立打包了。

如果使用這種操作流程,需要注意一點,就是每個模塊代碼更新之后,要及時安裝到本地倉庫,否則當 web 模塊獨立打包時,用到的其他模塊就不是最新的代碼。

3. 小結

好啦,幾個 Maven 中的小問題,窗戶紙捅破了就豁然開朗啦~

本文轉載自微信公眾號「江南一點雨」,可以通過以下二維碼關注。轉載本文請聯系江南一點雨生公眾號。

 

責任編輯:武曉燕 來源: 江南一點雨
相關推薦

2022-08-03 14:21:00

Maven項目代碼

2009-03-02 10:50:19

虛擬 項目 管理

2009-03-02 18:13:33

虛擬化虛擬管理計算機

2023-11-06 08:47:52

操作系統物理內存

2017-03-02 14:38:35

2025-07-30 00:02:00

AI技術AI Agent安全

2023-05-09 16:04:44

2009-11-16 11:31:54

Oracle數據導入

2009-11-11 09:48:06

Visual Stud

2009-11-06 17:13:24

Oracle SQL語

2009-11-13 14:49:50

Visual StudWindows Azu

2009-11-12 11:00:56

Visual C++

2009-12-25 13:58:15

LINUX光標移動

2021-03-07 22:37:17

Go代碼模式

2009-11-10 11:22:11

Visual Stud

2009-12-25 18:05:05

Linux壓縮程式

2016-03-30 09:56:07

c語言變量聲明objectivec

2022-04-27 08:22:41

非代碼形式開源開發者

2009-12-29 13:22:17

2016-06-30 09:36:53

IT眾包服務解放號中軟國際
點贊
收藏

51CTO技術棧公眾號

成人免费三级在线| 色棕色天天综合网| 亚洲国产精品久久人人爱蜜臀| 99re在线国产| 你懂的国产在线| 日本女优一区| 欧美v国产在线一区二区三区| 日韩欧美亚洲天堂| 欧美jizzhd69巨大| 波多野结衣中文一区| 国产精品久久久| 国产亚洲精品av| jvid福利在线一区二区| 精品欧美一区二区久久| 欧美日韩在线成人| 亚洲男同gay网站| 久久久99精品免费观看不卡| 亚洲在线免费视频| 男人天堂视频在线| 极品裸体白嫩激情啪啪国产精品| 在线成人中文字幕| 波多野结衣一二三区| 黄色成人小视频| 大伊人狠狠躁夜夜躁av一区| 中文字幕第一页亚洲| 免费在线高清av| 成人午夜视频免费看| 国产欧美一区二区三区久久人妖| 国产午夜性春猛交ⅹxxx| 一区二区影院| 日韩在线免费视频观看| 老司机福利av| 久久久免费毛片| 欧美日韩大陆在线| 男人搞女人网站| 性欧美freesex顶级少妇| 亚洲国产精品天堂| 看一级黄色录像| 免费av在线网址| 欧美激情一区在线| 欧美一级片免费观看| 天堂在线视频免费观看| 成人综合婷婷国产精品久久免费| 成人免费淫片aa视频免费| 国产情侣免费视频| 久久久久国产精品午夜一区| 欧美野外猛男的大粗鳮| 国产一区二区三区影院| 亚洲精品美女91| 久久久中精品2020中文| 久草视频免费在线| 欧美日韩成人| 欧美激情18p| 久久久久成人片免费观看蜜芽| 久久久国产精品| 日韩在线免费视频| 亚洲精品卡一卡二| 天天久久综合| 精品少妇v888av| 九九视频免费看| 狠狠入ady亚洲精品经典电影| 欧美美女操人视频| 国产中文字字幕乱码无限| 欧美日韩国产欧| 久久久久在线观看| 日韩欧美大片在线观看| 久久久久国产精品午夜一区| 国产精品久久久久久久电影| 中文字幕一区二区人妻| 久久av中文字幕片| 51成人做爰www免费看网站| 国内精品久久久久久久久久久| 国产aⅴ综合色| 精品日产一区2区三区黄免费| 天堂а√在线8种子蜜桃视频| 久久综合九色欧美综合狠狠| 日本不卡久久| av在线影院| 亚洲成人激情自拍| 成人黄色一区二区| 国产精品高清一区二区| 精品国产乱码久久久久久牛牛 | 欧美精品一区二区久久久| 2一3sex性hd| 国产欧美日韩一区二区三区四区| 最近2019中文字幕大全第二页| 免费看特级毛片| 一区二区三区四区五区精品视频| 国产z一区二区三区| 97在线公开视频| 成人免费视频一区| 日韩av在线一区二区三区| 成人av福利| 欧美午夜片欧美片在线观看| 国产三级精品三级在线| 精品人人人人| xxxxx91麻豆| 日本在线视频免费观看| 琪琪一区二区三区| 国产精品一区免费观看| 成人高清免费在线播放| 一区二区视频在线| 免费裸体美女网站| 77成人影视| 正在播放国产一区| 午夜偷拍福利视频| 久久成人av少妇免费| 久久av一区二区| 国产激情在线观看| 色八戒一区二区三区| 国产无套精品一区二区三区| 深爱激情久久| 午夜精品理论片| 国产精品欧美综合亚洲| 久久精品一区八戒影视| 欧洲精品在线播放| 亚洲国产天堂| 亚洲天堂免费观看| 日韩福利片在线观看| 狠狠色综合日日| 日韩精品在在线一区二区中文| 久久77777| 欧美午夜片在线看| 蜜桃传媒一区二区亚洲av| 欧美日韩精品| 91免费看片在线| 91在线直播| 91福利国产成人精品照片| 国产日韩视频一区| 五月天久久久| 国产情人节一区| 91在线看片| 国产一区二区欧美| 日韩av一卡二卡| 激情四射综合网| 国产在线视频一区二区| 亚洲视频精品一区| 成人日韩精品| 亚洲品质视频自拍网| 影音先锋亚洲天堂| 成人国产精品视频| www.亚洲视频.com| 成人另类视频| 欧美激情小视频| 亚洲av无码乱码国产麻豆| 亚洲精品视频在线观看免费 | 青娱乐国产盛宴| 久久国产尿小便嘘嘘| 视频一区国产精品| 97人人做人人爽香蕉精品| 一区二区欧美在线| 岳乳丰满一区二区三区| 中文字幕欧美三区| 99sesese| 亚洲一区在线| 97se视频在线观看| 日本孕妇大胆孕交无码| 精品国产免费一区二区三区四区 | 91精品专区| 欧洲色大大久久| 一区二区黄色片| 日本免费新一区视频| 欧美日韩精品久久| 日韩高清在线| 久久夜色撩人精品| 亚洲不卡免费视频| 狠狠久久五月精品中文字幕| www.久久国产| 日韩激情视频在线观看| 最新不卡av| av毛片精品| 日韩av电影在线播放| 在线免费看黄| 精品久久一区二区| 亚洲午夜18毛片在线看| 国产精品色一区二区三区| 性久久久久久久久久久久久久| 欧美成人69| 麻豆av一区二区三区| 91亚洲视频| 久久久国产精品x99av| 欧美一级性视频| 欧洲一区二区三区在线| 国产乱国产乱老熟300| 99久久免费精品高清特色大片| 97超碰青青草| 久久久久久久久99精品大| 国产传媒一区二区| 日韩一级二级| 欧美激情啊啊啊| 国产女人在线观看| 欧美大片一区二区三区| 国产成人精品777777| 日韩一区在线看| 中国黄色a级片| 狠狠色狠狠色综合| 国产aaa一级片| 久久精品免费一区二区三区| 久久亚洲一区二区| av日韩一区| 日韩美女视频在线观看| 色av手机在线| 一区二区三区天堂av| 丰满肉肉bbwwbbww| 欧美日韩精品三区| 少妇一级淫片免费放中国| 成人免费视频在线观看| 亚洲熟妇一区二区三区| 国产成人一级电影| 中文字幕有码av| 香蕉久久国产| 精品少妇人欧美激情在线观看| 久久精品国产大片免费观看| 国产一区二区高清不卡| 日韩区一区二| 国产精品直播网红| 在线免费日韩片| 97色伦亚洲国产| caoporn97在线视频| 中文字幕日韩欧美| 青青青草原在线| 精品久久人人做人人爱| 92久久精品一区二区| 在线观看亚洲精品| 日本视频在线观看免费| 夜夜精品浪潮av一区二区三区| 羞羞在线观看视频| 国产视频一区在线观看| 在线免费观看黄色小视频| 懂色av中文一区二区三区| 中文字幕第一页在线视频| 日韩精品亚洲专区| 久久婷婷五月综合色国产香蕉| 欧美日韩午夜| 国产日产欧美一区二区| 99久久综合| 亚洲午夜精品福利| 成人在线视频免费观看| 日本在线一区| 视频一区欧美| 日韩精品久久久毛片一区二区| 亚洲美女15p| 欧美婷婷久久| 国产精品嫩模av在线| 日本高清久久一区二区三区| 希岛爱理av免费一区二区| 国产麻豆一区二区三区在线观看| 综合激情久久| 狠狠干一区二区| 亲子伦视频一区二区三区| 精品一区二区日本| 亚洲理论电影| 亚洲精品中文字幕乱码三区不卡| 北条麻妃国产九九九精品小说| 亚洲一区在线免费| 亚洲成人免费| 男人添女人荫蒂免费视频| 99re国产精品| 国产视频在线视频| 卡一卡二国产精品| 91香蕉国产线在线观看| 国产成人亚洲精品青草天美| 成人在线观看一区二区| 99精品国产热久久91蜜凸| 一区二区三区少妇| 国产欧美日韩在线| 久草综合在线视频| 亚洲国产精品尤物yw在线观看| 九九精品免费视频| 欧美调教femdomvk| www.看毛片| 日韩国产中文字幕| 免费大片黄在线观看视频网站| 欧美激情一级精品国产| videos性欧美另类高清| 国产日韩精品综合网站| av综合网站| 日韩av电影免费在线观看| 亚洲九九视频| 六月丁香婷婷激情| 久久电影国产免费久久电影| 白丝校花扒腿让我c| 久久人人97超碰com| 午夜精品一区二区三级视频| 亚洲国产日韩精品| 亚洲 小说区 图片区| 日韩精品一区二| 国产福利在线视频| 久久久久久这里只有精品| 欧美大片1688| 亚洲专区在线视频| 在线免费看av网站| 国产精品嫩草影院av蜜臀| 玖玖爱免费视频| 一本色道久久综合亚洲精品按摩| 91中文字幕在线播放| 日韩成人av在线播放| 在线激情免费视频| 91国产美女在线观看| 999精品视频在线观看| 含羞草久久爱69一区| 99久久国产综合精品成人影院| 欧美男女爱爱视频| 久久国产人妖系列| 在线 丝袜 欧美 日韩 制服| 伊人色综合久久天天| 超碰在线观看91| 精品国产乱码久久久久久老虎| 国产黄在线观看| 97精品视频在线观看| 成人激情久久| 日韩aⅴ视频一区二区三区| 日韩视频一区| 在线观看免费看片| 中文字幕不卡三区| 久久久久久久久久久久久久av| 欧美一区二区福利视频| 2019中文字幕在线视频| 欧美一区二区三区免费观看| 网站一区二区| 爱爱爱视频网站| 免费观看在线综合色| 日本黄色特级片| 亚洲va韩国va欧美va精品| 国产chinasex对白videos麻豆| 中文字幕免费精品一区高清| 中文字幕乱码在线播放| 国产精品一区二区三区四区五区| 亚洲二区三区不卡| 不卡的在线视频| 国产精品二区一区二区aⅴ污介绍| 人人爽人人爽人人片av| 亚洲韩国欧洲国产日产av | 日韩福利视频一区| 国产 欧美 日本| 国产老肥熟一区二区三区| 欧美性x x x| 欧美日韩日日骚| 日韩三级影院| 国产欧美日韩丝袜精品一区| 日韩毛片视频| 日韩精品视频一二三| 国产精品美女久久久久久久久 | 精品国产网站在线观看| 日本大胆在线观看| 国产成人精品福利一区二区三区| 黄色日韩在线| 色婷婷免费视频| 欧美日韩亚洲高清| 你懂的在线免费观看| 国产不卡一区二区在线播放| 国产亚洲电影| 国产精品久久久毛片| 亚洲丝袜自拍清纯另类| 国产黄色av网站| 欧美国产一区二区三区| 成人知道污网站| 好吊妞无缓冲视频观看| 久久综合九色综合97婷婷| 免费看av在线| 不卡伊人av在线播放| 91精品久久久久久综合五月天| 欧美视频免费看欧美视频| 99久久99久久精品免费看蜜桃| 一本一道无码中文字幕精品热| 在线日韩第一页| www.成人| 一本久道高清无码视频| 91污在线观看| 在线中文字幕网站| 欧美国产日韩免费| 亚洲第一福利社区| www.久久91| 亚洲一级二级在线| 免费在线国产| 91久久久精品| 国产欧美另类| 男人在线观看视频| 亚洲国产精品yw在线观看| 日本国产欧美| 肉大捧一出免费观看网站在线播放| 99久久免费视频.com| 最新中文字幕免费| 欧美激情啊啊啊| 成人羞羞视频在线看网址| 久久发布国产伦子伦精品| 欧美日韩一区二区三区| 麻豆视频在线免费观看| 国产伦精品一区二区三区| 日本亚洲欧美天堂免费| 久草免费在线视频观看| 国产一区二区美女视频| 国产精品一区免费在线| 美女福利视频在线| 亚洲精品中文字幕在线观看| 可以直接在线观看的av| 97netav| 久久精品二区亚洲w码| 日韩黄色三级视频| 久久精品青青大伊人av|