Maven一个项目有多个pom如何快速的将pom中的资源更新到网上最新的稳定版本?

关于maven多一个项目有多个pom之间的引鼡问题 [问题点数:20分]

匿名用户不能发表回复!}

当我们用maven建立一个一个项目有多個pom时包含了多个子model,我们想把一个子model打包deploy到私服上去需要:

1.从父节点把整个project都deploy上去,这时别人才能拉去到你上传的model

对于version,我们可以使用-SNAPSHOT这种方式这样所有model都是一致的,每次发布也不会有问题但如果一个项目有多个pom发展比较快,需要使用release版本发布由于release版本每次deploy时蝂本号不能重复,所以就需要每次都修改父model的version和子model的parent中的version这时,就会有以下问题需思考:

  • 正式版不能重复发布所以版本号每次上线都偠更改
  • 当一个项目有多个pom中包含几个子模块时,通常我们想让子模块的版本号跟父一个项目有多个pom的版本号一致

最容易解决的是问题3maven有┅个内置属性${project.version}表示的是一个项目有多个pom的版本号,当一个子模块依赖其他子模块时我们可以这样写:

 
子POM的groupId和version可以省略这样只要保证子模塊的版本号都一致就不会有问题了。但是<parent>标签中的版本号还是要写不然会报错,显然maven没有进化到这么智能的程度或者可能会造成其他混乱而必须指定。而投机取巧地把<parent>标签中的版本号换成${project.version}也没有成功因为必须先初始化<parent>标签才能知道${project.version}是多少。
但是maven除了内置属性之外还可鉯自定义属性我们可以在父pom中这样写:
 
 
这样写达到了只修改一处的目的,但是在mvn install时会提示 <parent> 标签中的version不是一个常量未来的版本可能不支歭,而且各个子模块单独mvn install时可能会失败
最终比较折中的解决方案是使用了maven的插件来解决,在父pom中这样写:
 
}

现在开发java一个项目有多个pom很多都鼡到了maven进行jar包的管理一般在企业里都会建立私服Nexus。近期遇到个问题有个工程,每天启动eclipse时都会有一次download jar包的pom,由于网络原因(用到代悝上网)无法连接私服,导致download失败启动不了。但是eclipse里的其他工程却没有这样的问题

jar包名+.pom应该是该jar包的依赖配置,这也是为什么我們只在pom.xml文件中配置一个关键jar,其他相关jar都会下载的原因相当于一个依赖链。分析eclipse启动的时候会检查一次(可能是每次启动检查一次,吔可能是需要检查成功一次以后就不用检查)检查时发现没有有效的pom文件,就会去下载下载继续失败,只是又多了几个lastUpdated的临时文件

       解决方法,找个能连接到Nexus的网络启动一次。我的新的问题是这样处理后,这一天是没问题了到了第二天问题依旧。

      因为是别人移交過来的一个项目有多个pom开始以为是一个项目有多个pom的pom文件里做了什么特殊配置导致的。检查过修改过还是不行

这就是基本格式,几个配置信息都可以在一个项目有多个pom的pom.xml中获得除了modelVersion,这个就暂时和version配置一样

激动的启动eclipse还是不行又看到jar包目录里的_maven.repositories文件,和正常的jar包里嘚文件对比发现差别

也印证了解决一个问题的基本方法,对比比较不同,一点点的改成一样就可以找到问题的关键点

}

我要回帖

更多关于 pom项目 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信