[轉]maven與java命名規則

?

MAVEN 與 JAVA 包命名規范

?

拋出問題

?

在使用MAVEN搭建模塊化項目時,我的組織結構如下:

?

  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. 項目文件夾命名與maven中artifactId不一致

root模塊項目命名為package-module-project,root所對應的artifactId命名為chuillusion-package

?

  1. java包命名與maven不一致

核心模塊中java根包命名為:com.chuillusion.cores,核心項目中artifactId命名為chuillusion.core

?

  1. idea顯示不一致

當項目名稱與artifactId不一致時,idea則會在項目名則展示artifactId

?

如:chuillusionCore[chuillusion.core] ,即:項目名[artifactId]

?

命名規則探討

?

  1. 官網說明

參考MAVEN官方文檔中的命名規范

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. 以驅動包案例分析
<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

?

源碼結構:com.mysql作為項目根包

?

疑問:個人感覺是沒有按照規范進行命名的

?

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

?

源碼結構: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>

?

源碼結構:ch.qos.logback.classic作為根包

?

  1. 結論

1)源碼包中需要有groupId開頭,緊接artifactId作為根包

?

規范命名

?

養成良好的編碼習慣,從命名規范做起

?

修改項目命名

?

項目名與artifactId相對應,源碼目錄與整體結構對應

?

  1. root模塊

項目名稱: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項目為空結構,只有一個pom文件負責管理子模塊,因此沒有源碼目錄結構

?

  1. 核心模塊修改

修改方式一:

?

項目名稱: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>

?

源碼根目錄結構:com.chuillusion.core

?

修改方式二

?

項目名稱: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>

?

源碼根目錄結構:com.chuillusion.core

?

說明

?

寫這篇文章是因為1)項目中遇到的問題;2)在baidu上沒有相關文章

?

歡迎各位留言指正文章的錯誤,謝謝!


---------------------
作者:楚丶迷夢
來源:CSDN
原文:https://blog.csdn.net/sinat_30254575/article/details/79735051
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285545.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285545.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285545.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

為什么 Istio 要使用 SPIRE 做身份認證?

今年 6 月初&#xff0c;Istio 1.14 發布 [1] &#xff0c;該版本中最值得關注的特性是新增對 SPIRE 的支持。SPIFFE[2] 和 SPIRE 都是 CNCF 孵化項目&#xff0c;其中 SPIRE 是 SPIFFE 的實現之一。本文將帶你了解 SPIRE 對于零信任架構的意義&#xff0c;以及 Istio 是為何使…

C語言試題106之有一對兔子,從出生后第 3 個月起每個月都生一對兔子,小兔子長到第三個月 后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?

1、題目 題目:有一對兔子,從出生后第 3 個月起每個月都生一對兔子,小兔子長到第三個月 后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? 分析:兔子的規律為數列 1,1,2,3,5,8,13,21… 2 、溫馨提示 想獲取更多C語言題目請猛搓這里==========》200個C語言…

顯式強制類型轉換

1. 日期顯式轉換為數字new Date; //1478845373322javascript有個奇特的語法&#xff0c;即構造函數沒有參數時可以不用帶()。不過最好還是使用ES5中新加入的靜態方法&#xff1a;Date.now()。2. ~運算符按位運算符只適用于32位整數&#xff0c;運算符會強制操作數使用32位格式。…

【ArcGIS風暴】ArcGIS Editor for OSM中文教程(2):下載及加載OSM數據

本文講解在ArcGIS中借助OpenStreetMap工具下載并加載OSM數據。 文章目錄 1. 下載OSM數據2. 加載OSM數據1. 下載OSM數據 在工具箱中雙擊Download OSM Data(XAPI)工具。 Download URL:http://www.overpass-api.de/api/xapi_meta? Downlaod Extent:與圖層lanzhou相同

Object.observe將不加入到ES7

先請看 Object.observe 的 API Object.observe(obj, callback[, acceptList])它用來監聽對象的變化&#xff0c;當給該對象添加屬性&#xff0c;修改屬性時都會被依次記錄下來 看一個示例 var person {} Object.observe(person, function(arr) {var change arr[0]console.log…

Kafka學習征途:.NET Core操作Kafka

【Kafka】| 總結/Edison Zhou1可用的Kafka .NET客戶端作為一個.NET Developer&#xff0c;自然想要在.NET項目中集成Kafka實現發布訂閱功能。那么&#xff0c;目前可用的Kafka客戶端有哪些呢&#xff1f;目前.NET圈子主流使用的是 Confluent.Kafkaconfluent-kafka-dotnet : htt…

C語言試題107之判斷 101至200 之間有多少個素數,并輸出所有素數。

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:判斷 101至200 之間有多少個素數,并輸出所有素數 分析:判斷素數的方法:用一個數分…

C語言將十進制輸出二進制、八進制、十六進制的方法總結

文章目錄 方法一:直接輸出方法二:itoa函數方法一:直接輸出 C語言中,控制printf函數輸出格式的是格式字符,printf沒有直接打出2進制數的格式符,直接打出16進制的格式符是x格式符,即%x。 printf函數中輸出的格式為printf("<格式化字符串>", <參量表&…

[Android] 修改ImageView的圖片顏色

有兩種方法&#xff1a; 方法1&#xff1a; ImageView imageView (ImageView) findViewById(R.id.arrow_image); Drawable tipsArrow imageView.getDrawable(); tipsArrow.setColorFilter(mContext.getResources().getColor(R.color.red_bg1), PorterDuf…

四叉樹算法

2019獨角獸企業重金招聘Python工程師標準>>> title: 四叉樹算法 date: 2016-1-11 15:10 categories: IOS tags: 算法 小小程序猿我的博客&#xff1a;http://daycoding.com 轉載&#xff1a;http://blog.csdn.net/zhanxinhang/article/details/6706217 高德iOS聚合…

2019年中國教育信息化行業研究報告

2019年中國教育信息化行業研究報告 教育行業丨研究報告 本文轉自&#xff1a;艾瑞咨詢 核心摘要&#xff1a; 教育信息化2.0時代&#xff0c;教育相關政府/學校以更開放的姿態對待社會各類業態的進入&#xff0c;共建共享優質教育資源&#xff0c;提升教育公平與教育質量。同…

C語言試題109之將一個正整數分解質因數。例如:輸入 90,打印出 90=2乘3乘3乘5

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:將一個正整數分解質因數。例如:輸入 90,打印出 90=233*5。 分析:對 n 進行分解質因…

【ArcGIS遇上Python】使用add-in向導開發ArcGIS插件(1):add-in工具介紹及安裝

文章目錄 addin介紹addin開發方式Python Add-In開發addin下載addin安裝基于ArcObject/ArcGIS Engine的Add-In開發addin介紹 ArcGIS從10.0開始支持addin(ArcGIS軟件中又叫作加載項)的方式進行插件制作。相對于以往9.x系列,addin的無論是從使用或者編寫都更加方便快捷。通過開…

dotnet 使用 Crossgen2 對 DLL 進行 ReadyToRun 提升啟動性能

我對幾個應用進行嚴格的啟動性能評估&#xff0c;對比了在 .NET Framework 和 dotnet 6 下的應用啟動性能&#xff0c;非常符合預期的可以看到&#xff0c;在用戶的設備上&#xff0c;經過了 NGen 之后的 .NET Framework 可以提供非常優越的啟動性能&#xff0c;再加上 .NET Fr…

使用myeclipse建立maven項目(重要)

maven是管理項目的&#xff0c;myeclipse是編寫代碼的。第一次寫項目都要配置好多東西&#xff0c;很麻煩&#xff0c;now 來看看怎樣新建一個maven項目。 工具/原料 myeclipsemaven方法/步驟 因為教程使用的maven是自己下載配置的&#xff0c;并沒有使用myeclipse自帶的&#…

LeetCode 每日一題 Day 22 || 枚舉(數學方法)/二分

1954. 收集足夠蘋果的最小花園周長 給你一個用無限二維網格表示的花園&#xff0c;每一個 整數坐標處都有一棵蘋果樹。整數坐標 (i, j) 處的蘋果樹有 |i| |j| 個蘋果。 你將會買下正中心坐標是 (0, 0) 的一塊 正方形土地 &#xff0c;且每條邊都與兩條坐標軸之一平行。 給你…

不用@微信官網了,用python給自己的微信頭像加個小國旗

國旗LOGO&#xff08;png透明格式&#xff09;&#xff1a; 微信頭像 合成結果&#xff1a; import base64 import os import re from io import BytesIO from PIL import Image import tkinter as tk from tkinter import filedialog# 水印圖片 可以自己指定 #markImageImage…

getContentResolver().query()方法selection參數使用詳解(轉)

如何在managedQuery()和getContentResolver().query()方法中實現結果去重 有時候&#xff0c;我們需要對查詢的數據庫結果進行去重。在SQL中我們可以通過distinct關鍵字實現&#xff0c;但是當我們使用android提供的managedQuery()或getContentResolver().query()方法對數據庫進…

C語言試題106之有一對兔子問題

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:有一對兔子,從出生后第 3 個月起每個月都生一對兔子,小兔子長到第三個月 后每個月又…

【C#程序設計】教學講義——第二章:簡單C#程序設計

教學目錄 2.1 面向對象的概念2.2 建立簡單的應用程序2.3 窗體和Label控件2.4 文本框-屬性2.5 按鈕控件本章小結2.1 面向對象的概念 2.1.1 對象和類 1.對象 對象是客觀世界中對象的模型化。對象是有著特殊數據(屬性)與操作(行為)的實體,對象的操作(行為)稱為方法。 程…