groupId和artifactId怎么写
groupId,artifactId,version,packaging作为项目唯一坐标
groupId一般分为多个段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,artigactId是tomcat。
比如我创建一个项目,我一般会将groupId设置为com.mycompany,com表示域为商业组织,mycompany是公司英文名称,artifactId设置为etshop,表示你这个项目的名称是etshop,依照这个设置,你的包结构最好是com.mycompany.etshop打头的,如果有个productDao,它的全路径就是com.mycompany.etshop.productDao
pom.xml中的如下设置
pom
说明pom 项目里没有java代码,也不执行任何代码,只是为了聚合工程或传递依赖用的,一般父模块中的pom配置要有此内容。如果子模块中添加了依赖,而父模块没有配置pom,则会报错 must be “pom” but is “jar”
父模块中的设置有什么用?如下,配置之后,我们在编绎父模块的时候,会自动重新编绎子模块,如果没有modules设置,则不会自动编绎子模块。
hitest_a
maven项目pom.xml中标签的使用
groupId:项目或者组织的唯一标志 ,如cn.gov.customs生成的相对路径为:/cn/gov/customs
artifactId:项目的通用名称
version:项目的版本
packaging:打包机制,如pom,jar,maven-plugin,ejb,war,ear,rar,par
name:用户描述项目的名称,无关紧要的东西,非必要
url:开发团队官方地址 ,非必要
classifer:分类
对于以上基本标签,groupId,artifactId,version,packaging作为项目唯一坐标
使用maven是为了更好的帮项目管理包依赖,maven的核心就是pom.xml。当我们需要引入一个jar包时,在pom文件中加上就可以从仓库中依赖到相应的jar包。
现在有这样一个场景,有两个web项目A、B,一个java项目C,它们都需要用到同一个jar包:common.jar。如果分别在三个项目的pom文件中定义各自对common.jar的依赖,那么当common.jar的版本发生变化时,三个项目的pom文件都要改,项目越多要改的地方就越多,很麻烦。这时候就需要用到parent标签, 我们创建一个parent项目,打包类型为pom,parent项目中不存放任何代码,只是管理多个项目之间公共的依赖。在parent项目的pom文件中定义对common.jar的依赖,ABC三个子项目中只需要定义,parent标签中写上parent项目的pom坐标就可以引用到common.jar了。
上面的问题解决了,我们在切换一个场景,有一个springmvc.jar,只有AB两个web项目需要,C项目是java项目不需要,那么又要怎么去依赖。如果AB中分别定义对springmvc.jar的依赖,当springmvc.jar版本变化时修改起来又会很麻烦。解决办法是在parent项目的pom文件中使用将springmvc.jar管理起来,如果有哪个子项目要用,那么子项目在自己的pom文件中使用
标签中写上springmvc.jar的坐标,不需要写版本号,可以依赖到这个jar包了。这样springmvc.jar的版本发生变化时只需要修改parent中的版本就可以了。
具体举例代码如下
4.0.0
org.sonatype.oss
oss-parent
9
com.github.mpusher
mpush
pom
0.8.1
mpush
MPUSH消息推送系统
https://github.com/mpusher/mpush
The Apache Software License, Version 2.0
http://www.apache.org/licenses/LICENSE-2.0.txt
repo
v${project.version}
https://github.com/mpusher/mpush
scm:git:git://github.com/mpusher/mpush.git
scm:git:ssh://github.com/mpusher/mpush.git
GitHub Issues
https://github.com/mpusher/mpush/issues
MPusher, Inc.
https://mpusher.io
夜色
[email protected]
mpusher
mpush-api
mpush-boot
mpush-core
mpush-tools
mpush-netty
mpush-common
mpush-client
mpush-test
mpush-monitor
mpush-zk
mpush-cache
UTF-8
UTF-8
UTF-8
1.8
4.1.25.Final
1.7.25
linux-x86_64
io.netty
netty-codec
${netty.version}
io.netty
netty-transport
${netty.version}
io.netty
netty-transport-native-epoll
${netty.version}
${os.detected.classifier}
io.netty
netty-codec-http
${netty.version}
io.netty
netty-handler
${netty.version}
io.netty
netty-transport-udt
${netty.version}
io.netty
netty-transport-sctp
${netty.version}
${project.groupId}
mpush-test
${project.version}
${project.groupId}
mpush-api
${project.version}
${project.groupId}
mpush-tools
${project.version}
${project.groupId}
mpush-common
${project.version}
${project.groupId}
mpush-netty
${project.version}
${project.groupId}
mpush-core
${project.version}
${project.groupId}
mpush-client
${project.version}
${project.groupId}
mpush-monitor
${project.version}
${project.groupId}
mpush-boot
${project.version}
${project.groupId}
mpush-zk
${project.version}
${project.groupId}
mpush-cache
${project.version}
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
log4j-over-slf4j
${slf4j.version}
org.slf4j
jul-to-slf4j
${slf4j.version}
org.slf4j
jcl-over-slf4j
${slf4j.version}
ch.qos.logback
logback-classic
1.2.3
commons-logging
commons-logging
1.1.3
provided
log4j
log4j
1.2.17
provided
junit
junit
4.10
test
org.apache.commons
commons-lang3
3.6
com.google.guava
guava
20.0
com.alibaba
fastjson
1.2.47
org.apache.curator
curator-recipes
2.12.0
netty
io.netty
org.apache.curator
curator-x-discovery
2.12.0
redis.clients
jedis
2.9.0
com.typesafe
config
1.3.3
org.javassist
javassist
3.22.0-GA
junit
junit
test
maven-compiler-plugin
3.6.2
${java.version}
${java.encoding}
maven-resources-plugin
3.0.2
${java.encoding}
maven-surefire-plugin
2.20
true
dev
true
dev
pub
pub