Classifier可能是最容易被忽略的Maven特性,但它确实非常重要,我们也需要它来帮助规划坐标。设想这样一个情况,有一个jar项目,就说是
dog-cli-1.0.jar
吧,运行它用户就能在命令行上画一只小狗出来。现在用户的要求是希望你能提供一个zip包,里面不仅包含这个可运行的jar,还得包含源代码和文档,换句话说,这是比较正式的分发包。这个文件名应该是怎样的呢?
dog-cli-1.0.zip
?不够清楚,仅仅从扩展名很难分辨什么是Maven默认生成的构件,什么是额外配置生成分发包。如果能是
dog-cli-1.0-dist.zip
就最好了。这里的dist就是classifier,默认Maven只生成一个构件,我们称之为主构件,那
当我们希望Maven生成其他附属构件的时候,就能用上classifier
。常见的classifier还有如
dog-cli-1.0-sources.jar
表示源码包,
dog-cli-1.0-javadoc.jar
表示JavaDoc包等等。制作classifier的方式多种多样,其中最重要的一种是使用
Maven Assembly Plugin
,感兴趣的读者可以进一步研究。