MAVEN 與 JAVA 包命名規(guī)范

MAVEN 與 JAVA 包命名規(guī)范

拋出問題

在使用MAVEN搭建模塊化項(xiàng)目時(shí),我的組織結(jié)構(gòu)如下:

  1. root模塊

文件夾名:package-module-project

pom.xml文件:

<project>
    <groupId>com.chuillusion</groupId>
    <artifactId>chuillusion-package</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    
    <modules>
        <module>chuillusionCore</module>
        <module>chuillusionBrowser</module>
        <module>chuillusionApp</module>
        <module>chuillusionDemo</module>
    </modules>
</project>
  1. 子模塊

2.1 核心模塊
文件夾名:chuillusionCore

pom.xml文件:

<project>
    <parent>
        <artifactId>chuillusion-package</artifactId>
        <groupId>com.chuillusion</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>chuillusion.core</artifactId>
</project>

Java包命名:com.chuillusion.cores為根包

存在問題

  1. 項(xiàng)目文件夾命名與maven中artifactId不一致

root模塊項(xiàng)目命名為package-module-project比庄,root所對(duì)應(yīng)的artifactId命名為chuillusion-package

  1. java包命名與maven不一致

核心模塊中java根包命名為:com.chuillusion.cores求妹,核心項(xiàng)目中artifactId命名為chuillusion.core

  1. idea顯示不一致

當(dāng)項(xiàng)目名稱與artifactId不一致時(shí),idea則會(huì)在項(xiàng)目名則展示artifactId

如:chuillusionCore[chuillusion.core] 佳窑,即:項(xiàng)目名[artifactId]

命名規(guī)則探討

  1. 官網(wǎng)說明

參考MAVEN官方文檔中的命名規(guī)范

Guide to naming conventions on groupId, artifactId and version

  1. groupId will identify your project uniquely across all projects, so we need to enforce a naming schema. It has to follow the package name rules, what means that has to be at least as a domain name you control, and you can create as many subgroups as you want. Look at

    More information about package names.

    eg. org.apache.maven, org.apache.commons

    A good way to determine the granularity of the groupId is to use the project structure. That is, if the current project is a multiple module project, it should append a new identifier to the parent's groupId.

    eg. org.apache.maven, org.apache.maven.plugins, org.apache.maven.reporting

  2. artifactId is the name of the jar without version. If you created it then you can choose whatever name you want with lowercase letters and no strange symbols. If it's a third party jar you have to take the name of the jar as it's distributed.

    eg. maven, commons-math

  3. version if you distribute it then you can choose any typical version with numbers and dots (1.0, 1.1, 1.0.1, ...). Don't use dates as they are usually associated with SNAPSHOT (nightly) builds. If it's a third party artifact, you have to use their version number whatever it is, and as strange as it can look.

    eg. 2.0, 2.0.1, 1.3.1

  1. 以驅(qū)動(dòng)包案例分析
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.43</version>
</dependency>

生成的包名稱為:mysql:mysql-connector-java-5.1.43.jar制恍,即為groupId:artifactId-version.jar

源碼結(jié)構(gòu):com.mysql作為項(xiàng)目根包

疑問:個(gè)人感覺是沒有按照規(guī)范進(jìn)行命名的

  1. assertj分析
<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>
    <version>3.8.0</version>
</dependency>

源碼結(jié)構(gòu):org.assertj.core作為根包

  1. logback分析
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.3.0-alpha3</version>
    <scope>test</scope>
</dependency>

源碼結(jié)構(gòu):ch.qos.logback.classic作為根包

  1. 結(jié)論

1)源碼包中需要有g(shù)roupId開頭,緊接artifactId作為根包

規(guī)范命名

養(yǎng)成良好的編碼習(xí)慣神凑,從命名規(guī)范做起

修改項(xiàng)目命名

項(xiàng)目名與artifactId相對(duì)應(yīng)吧趣,源碼目錄與整體結(jié)構(gòu)對(duì)應(yīng)

  1. root模塊

項(xiàng)目名稱:package-module-project

<project>
    <groupId>com.chuillusion</groupId>
    <artifactId>package-module-project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    
    <modules>
        <module>chuillusion-core</module>
        <module>chuillusion-browser</module>
        <module>chuillusion-app</module>
        <module>chuillusion-demo</module>
    </modules>
</project>

root項(xiàng)目為空結(jié)構(gòu),只有一個(gè)pom文件負(fù)責(zé)管理子模塊俯渤,因此沒有源碼目錄結(jié)構(gòu)

  1. 核心模塊修改

修改方式一:

項(xiàng)目名稱:chuillusion-core

<project>
    <parent>
        <artifactId>package-module-project</artifactId>
        <groupId>com.chuillusion</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>chuillusion-core</artifactId>
</project>

源碼根目錄結(jié)構(gòu):com.chuillusion.core

修改方式二

項(xiàng)目名稱:core

<project>
    <parent>
        <artifactId>package-module-project</artifactId>
        <groupId>com.chuillusion</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>core</artifactId>
</project>

源碼根目錄結(jié)構(gòu):com.chuillusion.core

說明

寫這篇文章是因?yàn)?)項(xiàng)目中遇到的問題趴酣;2)在baidu上沒有相關(guān)文章

歡迎各位留言指正文章的錯(cuò)誤岖寞,謝謝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市秘噪,隨后出現(xiàn)的幾起案子指煎,更是在濱河造成了極大的恐慌,老刑警劉巖崇渗,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異跟狱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)关翎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門星立,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绰垂,“玉大人劲装,你說我怎么就攤上這事。” “怎么了窖逗?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵碎紊,是天一觀的道長。 經(jīng)常有香客問我秃嗜,道長锅锨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮霜第,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘末誓。我一直安慰自己喇澡,他們只是感情好晴玖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪畜号。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天贸典,我揣著相機(jī)與錄音廊驼,去河邊找鬼据过。 笑死,一個(gè)胖子當(dāng)著我的面吹牛妒挎,可吹牛的內(nèi)容都是我干的绳锅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼酝掩,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼鳞芙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起期虾,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤原朝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后镶苞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喳坠,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年茂蚓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了壕鹉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剃幌。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖晾浴,靈堂內(nèi)的尸體忽然破棺而出负乡,到底是詐尸還是另有隱情,我是刑警寧澤脊凰,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布抖棘,位于F島的核電站,受9級(jí)特大地震影響笙各,放射性物質(zhì)發(fā)生泄漏钉答。R本人自食惡果不足惜础芍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一杈抢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧仑性,春花似錦惶楼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晨汹,卻和暖如春豹储,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背淘这。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國打工剥扣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人铝穷。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓钠怯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親曙聂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子晦炊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)宁脊,斷路器断国,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • 簡介 概述 Maven 是一個(gè)項(xiàng)目管理和整合工具 Maven 為開發(fā)者提供了一套完整的構(gòu)建生命周期框架 Maven...
    閩越布衣閱讀 4,288評(píng)論 6 39
  • 文章作者:Tyan博客:noahsnail.com 2.Introduction to the Spring Fr...
    SnailTyan閱讀 5,390評(píng)論 7 56
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,322評(píng)論 0 10
  • 老鐵們,今天開始下果園采蜜柚了榆苞, 水分并思,糖度,色澤都基本okay语稠, 不僅色澤亮麗肉厚多汁宋彼, 且清甜微酸細(xì)膩清甜弄砍, ...
    柴可夫JJ閱讀 303評(píng)論 0 0