2017-06-04 30 views
0

我使用maven 3并且我在一个OSGi项目中使用了许多模块。 每个模块都有不同的版本,所以当有人进行修改时,他需要将版本更新为-SNAPSHOT。但有时候人们会忘记更改版本,因此在部署完成时,没有任何部署,并且新代码没有嵌入到发行版中。 这就是为什么我要在此改变部署Maven插件只在发布jar添加一个MD5验证(不是快照,因为我敢肯定,他们正在部署),并写log.warn说“检查版本模块X,因为IT方面似乎已经模块改变但版本是一样的以前“Maven在部署之前部署检查md5

currenlty当我做部署,我得到释放jar的模块,我比较md5与我的目标目录中的jar,但由于MANIFEST,MD5是从来没有相同,所以我得到总是我的警告。 我更改了代码一点要检查的文件的MD5文件,现在我可以使不同的文件,而不检查文件的清单(清单....) 但是,如果90%的文件具有相同的MD5的报告,其他不,但如果。我打开2不同的文件,实际上它们是同文...只是因为关系罐子是在Linux上构建和目标罐子建立在窗口...一些文件不同等诸多不是......

我怎样才能创建在linux上建立一个jar或与md5相同的窗口?这有可能或取决于诸如processeur,linux/windows之类的许多东西吗?

由于通过提前,如果您有任何其他的想法做自己想做的事,其它manear ...

+0

首先你通过'没什么意思是部署,'如果他们改变的东西比新的快照将被制成,该快照具有不同的时间戳记,这意味着在OSGi的不同预选赛?除此之外快照不能集成到发布中...... btw:在MANIFEST中定义了哪些版本,或者它们是如何定义的? – khmarbaise

+0

如果开发人员忘记更改包的限定符,则不会部署任何内容。如果版本为1.0.0,则此版本已存在于nexus上,而mvndeploy不会部署任何配置。但开发人员更改java类,并且即使我们将版本传递到1.1.0-SNAPSHOT,代码也不会部署。我们使用maven-bundle-plugin,所以我们不定义静态版本,所以我们有一个由插件设置的默认范围。 –

+0

你在使用tycho吗? – khmarbaise

回答

0

你可以改善不容许该稳定版本允许你提交你的释放过程。实际上,提交应该在SNAPSHOT版本中进行。那么你如何保证这一点呢?您可以编写一个pre-hook commit来验证正在提交的此项目的pom.xml是否在其版本属性上具有SNAPSHOT。

所以,在部署模块之前,你运行你的释放过程,commiting POM以一个稳定的版本。例如,Maven Release Plugin就是这样做的。

+0

是的,它是一个很好的解决方案,但如果有人忘记把钩子文件放在他的git本地,钩子永远不会开火,我们可以再次出现错误...我想直接把它放在maven中有外部配置;)但它可以是一个很好的临时解决方案;)谢谢或建议 –