maven经过坐标惟一肯定一个jar包,它们是groupId,artifactId,version,packaging,class-sife。java
<groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <packaging>jar</packaging> <version>0.0.1-SNAPSHOT</version>
groupId :定义当前Maven项目隶属的实际项目。首先,Maven项目和实际项目不必定是一对一的关系。好比SpringFrameWork这一实际项目,其对应的Maven项目会有不少,如spring-core,spring-context等。这是因为Maven中模块的概念,所以,一个实际项目每每会被划分红不少模块。其次,groupId不该该对应项目隶属的组织或公司。缘由很简单,一个组织下会有不少实际项目,若是groupId只定义到组织级别,然后面咱们会看到,artifactId只能定义Maven项目(模块),那么实际项目这个层次将难以定义。最后,groupId的表示方式与Java包名的表达方式相似,一般与域名反向一一对应。spring
artifactId : 该元素定义当前实际项目中的一个Maven项目(模块),推荐的作法是使用实际项目名称做为artifactId的前缀。好比上例中的my-app。app
version : 该元素定义Maven项目当前的版本maven
packaging :定义Maven项目打包的方式,首先,打包方式一般与所生成构件的文件扩展名对应,如上例中的packaging为jar,最终的文件名为my-app-0.0.1-SNAPSHOT.jar。也能够打包成war, ear等。当不定义packaging的时候,Maven 会使用默认值jar插件
classifier: 该元素用来帮助定义构建输出的一些附件。附属构件与主构件对应,如上例中的主构件为my-app-0.0.1-SNAPSHOT.jar,该项目可能还会经过一些插件生成如my-app-0.0.1-SNAPSHOT-javadoc.jar,my-app-0.0.1-SNAPSHOT-sources.jar, 这样附属构件也就拥有了本身惟一的坐标code