maven父子模块deploy 问题

1.问题描述:直接 deploy 子某块,但第三者确不能引用 jar(jar down不下来,但pom不报错)

  缘由:父子模块项目必须保证父模块pom deploy后,再 deploy 子模块才能被引用到,或者直接 deploy 父 pom 将整个项目模块deploynginx

2.问题描述:有两个项目:父项目:A,子项目:B

在A /pom.xml中:maven

<groupId>com.dummy.bla</groupId> <artifactId>parent</artifactId> <version>0.1-SNAPSHOT</version> <packaging>pom</packaging> 

在B /pom.xml中,我有:spa

<parent> <groupId>com.dummy.bla</groupId> <artifactId>parent</artifactId> <version>0.1-SNAPSHOT</version> </parent> <groupId>com.dummy.bla.sub</groupId> <artifactId>kid</artifactId> 

我想要B从父级继承版本,因此我须要把0.1-SNAPSHOT放在A/pom.xml中的惟一地方就是A/pom.xml。可是,若是我从父节下的B/pom.xml中删除<version>0.1-SNAPSHOT</version>,maven会抱怨父级的缺乏版本。code

有没有办法我可使用${project.version}或相似的东西,以免在两个poms中有01.-SNAPSHOTxml

 

第一:最佳解决方案

不,没有。您必须指定父级版本。幸运的是,它被继承为模块的版本,在大多数状况下是理想的。此外,这个父母的版本声明由Maven Release Plugin自动触发,因此 – 实际上,只要你使用Maven Release Plugin发布或者只是碰撞版本,你就能够在2个地方使用版本。继承

请注意,在某些状况下,此行为其实是可行的,并提供了更多的灵活性,您可能须要。有时你想使用一些之前的父母的版原本继承,但这不是主流的状况。it

 

第二:次佳解决方案(此方案不可行)

缘由:虽然此方案本地编译安装能够;但 deploy到私服,外部仍然不能引用。由于${global.version}会打进父 pom和子jar包而不是替换,但引用外部jar包时,该jar 的父模块版本须要肯定io

Maven不是以这种方式工做,而是为了实现这一目标而存在一种解决方法(多是反作用,你将不得不尝试一下)。诀窍是告诉孩子项目经过它的相对路径而不是纯粹的maven坐标找到它的父项,并且外部化一个属性中的版本号:编译

父母pom

<groupId>com.dummy.bla</groupId> <artifactId>parent</artifactId> <version>${global.version}</version> <packaging>pom</packaging> <properties> <!-- Unique entry point for version number management --> <global.version>0.1-SNAPSHOT</global.version> </properties> 

小孩pom

<parent> <groupId>com.dummy.bla</groupId> <artifactId>parent</artifactId> <version>${global.version}</version> <relativePath>..</relativePath> </parent> <groupId>com.dummy.bla.sub</groupId> <artifactId>kid</artifactId> 

我把这个伎俩用于个人一个项目一段时间,没有任何具体问题,除了maven在构建开始时记录了不少警告,这不是很优雅。class

EDIT

彷佛maven 3.0.4不容许这样的配置了。

 

第三种解决方案

最简单的更新版本imo的方法:

mvn versions:set -DgenerateBackupPoms=false 

(在您的根/父pom文件夹中这样作)。

你的poms被解析,你被问到要设置哪一个版本。

 

第四种方案

是的,但您也可使用"mvn release:update-versions -DdevelopmentVersion={version}"来更新POM中的版本号

相关文章
相关标签/搜索