groupId
template
com.company.projectName
egcom.by.study
artifactId
template
projectName-moduleName
egstudy-base
version
<主版本>.<次版本>.<增量版本>-<限定符>
主版本:主要表示大型架構(gòu)變更
次版本:主要表示特性的增加
增量版本:主要服務(wù)于bug修復(fù)
限定符:如alpha、beta等等是用來表示里程碑
當然不是每個項目的版本都要用到這些4個部分搔涝,根據(jù)需要選擇性的使用即可濒旦。在此基礎(chǔ)上Maven還引入了SNAPSHOT
的概念,用來表示活動的開發(fā)狀態(tài),由于不涉及坐標規(guī)劃,這里不進行詳述太雨。不過有點要提醒的是钞支,由于SNAPSHOT的存在茫蛹,自己顯式地在version中使用時間戳字符串其實沒有必要。
Classifier
Classifier可能是最容易被忽略的Maven特性烁挟,但它確實非常重要婴洼,我們也需要它來幫助規(guī)劃坐標。設(shè)想這樣一個情況信夫,有一個jar項目,就說是
dog-cli-1.0.jar
吧卡啰,運行它用戶就能在命令行上畫一只小狗出來【驳荆現(xiàn)在用戶的要求是希望你能提供一個zip包,里面不僅包含這個可運行的jar匈辱,還得包含源代碼和文檔振湾,換句話說,這是比較正式的分發(fā)包亡脸。這個文件名應(yīng)該是怎樣的呢押搪?
dog-cli-1.0.zip
?不夠清楚浅碾,僅僅從擴展名很難分辨什么是Maven默認生成的構(gòu)件大州,什么是額外配置生成分發(fā)包。如果能是dog-cli-1.0-dist.zip
就最好了垂谢。這里的dist就是classifier厦画,默認Maven只生成一個構(gòu)件,我們稱之為主構(gòu)件滥朱,那當我們希望Maven生成其他附屬構(gòu)件的時候根暑,就能用上classifier。常見的classifier還有如dog-cli-1.0-sources.jar
表示源碼包徙邻,dog-cli-1.0-javadoc.jar
表示JavaDoc包等等排嫌。制作classifier的方式多種多樣,其中最重要的一種是使用Maven Assembly Plugin缰犁,感興趣的讀者可以進一步研究淳地。
reference
http://www.infoq.com/cn/news/2010/12/xxb-maven-1
http://wiki.jikexueyuan.com/project/maven/snapshots.html
http://www.infoq.com/cn/minibooks/maven-in-action