java – 使用Jenkins的Maven – 更新父pom版本的依赖项
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用Jenkins的Maven – 更新父pom版本的依赖项,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4644字,纯文字阅读大概需要7分钟。
内容图文
我有一个类似于此的pom文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>myApp</groupId>
<artifactId>myAppId</artifactId>
<packaging>war</packaging>
<version>1.2-SNAPSHOT</version>
<name>Maven Test Webapp</name>
<url>http://maven.apache.org</url>
<dependency>
<groupId>com.manydesigns</groupId>
<artifactId>portofino-war</artifactId>
<version>3.1.10</version>
<type>war</type>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<finalName>TestName</finalName>
</build>
</project>
如果我在上面的pom文件上运行’mvn release:prepare’,则工件的版本会发生变化.即它变成了
<version>1.2</version>
现在让我说我已经去了并更新了portofino-war应用程序,它是这个pom文件的依赖项. portofino-war现在版本为3.1.11,但父pom文件指向版本3.1.10,如上所示.
如果建立了新版本的portofino-war,我有什么方法可以更新父pom(通过Maven或Jenkins)文件?
谢谢
编辑
该应用程序使用Maven覆盖 – http://maven.apache.org/plugins/maven-war-plugin/overlays.html从其他war文件构建war文件.这意味着如果构建了任何依赖模块,则必须构建父模块以生成最终war文件.
问题是,如果我构建任何模块,我必须手动更新父pom文件中的版本,以使用正确的模块版本进行构建.
编辑2
谢谢你的帮助拉尔夫.基本上这就是我想要实现的目标:
我想要做的是创建一个maven项目,将基于几个模块构建一个war文件.假设模块具有以下结构:
第1单元
customerModule
|-webapp
|-jsp
|-customer
|-findCustomer.jsp
|-addNewCustomer.jsp
|-deleteCustomer.jsp
|-src
|-com
|-mycompany
|-customer
|-FindCustomerAction.java
|-AddCustomerAction.java
|-DeleteCustomer.java
单词数
productModule
|-webapp
|-jsp
|-product
|-productCustomer.jsp
|-addNewProduct.jsp
|-deleteProduct.jsp
|-src
|-com
|-mycompany
|-product
|-FindProductAction.java
|-AddProductAction.java
|-DeleteProduct.java
单词数
commonModule
|-webapp
|-css
|-style.css
|-jsp
|-templates
|-coreTemplate.jsp
|-src
com
|-mycomany
|-common
|-Logger.java
|-Access.java
|-META-INF
|-MANIFEST.MF
|-context.xml
|-WEB-INF
|-lib
|-oraclejdbc.lib
|-log4j.lib
|-common.lib
|-struts-config.xml
|-tiles-def.xml
|-web.xml
所示的每个模块都将由不同的团队开发.每个团队生成一个war文件并将其安装在本地maven存储库中.作为示例,存储库可能如下所示
com
|-customerModule
|-customerModule.v2.1.war
|-customerModule.v3.0.war
|-productModule
|-productModule.v3.0.war
|-productModule.v3.1.war
|-commonModule
|-commonModule.v0.5.war
|-commonModule.v3.0.war
现在构建管理器使用上面的war文件来构建最终的可部署war文件.我原计划使用maven叠加来合并三个war文件.我测试了使用叠加层合并war文件,发现以下配置有效.即使用依赖项:
注意:这些依赖项位于commonModule pom文件中
<dependency>
<groupId>com</groupId>
<artifactId>customerModule</artifactId>
<version>3.0</version>
<type>war</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com</groupId>
<artifactId>productModule</artifactId>
<version>3.1</version>
<type>war</type>
<scope>compile</scope>
</dependency>
如果我然后构建commonModule模块,我最终得到一个war文件,其中包含Module1,Module2和Module3的所有内容.最终结果是这样的:
MyApp.war
|-webapp
|-css
|-style.css
|-jsp
|-customer
|-findCustomer.jsp
|-addNewCustomer.jsp
|-deleteCustomer.jsp
|-product
|-productCustomer.jsp
|-addNewProduct.jsp
|-deleteProduct.jsp
|-templates
|-coreTemplate.jsp
|-META-INF
|-MANIFEST.MF
|-context.xml
|-WEB-INF
|-lib
|-oraclejdbc.lib
|-log4j.lib
|-common.lib
|-customerModule.jar
|-productModule.jar
|-classes
|-com
|-mycomany
|-common
|-Logger.class
|-Access.class
|-struts-config.xml
|-tiles-def.xml
|-web.xml
以上工作但需要一些人工干预才能完整发布.以下是修改模块时会发生什么的示例
第1组更新模块1
- Team 1 makes changes to module 1 and check in changes into CVS
- Team 1 installs module 1 onto the maven repository by issuing mvn:prepare and mvn:perform on module 1. This adds a new version of customerModule.war on to the local repository
- Team 1 updates the dependency version for module 1 in the pom file used to merge the war files (i.e. commonModule)
- Team 1 builds the deployable war file by building the commonModule.
上面没有像你建议的那样使用多模块项目,所以我试图理解版本控制如何与多模块项目一起工作.例如,假设多模块项目看起来像这样
MyApp
|- productModule
|-pom.xml
|- customerModule
|-pom.xml
|- commonModule
|-pom.xml
|-pom.xml
>与父母版本号相比,在每个子模块中添加版本号有什么区别?
>您说子模块将使用父版本.可以说父版本目前是版本3.4,它怎么会知道它应该使用productModule.war的3.1版本?
>最后,如果团队1对其中一个子模块进行了更改,他们是否仍需要构建它并在构建多模块项目之前将其作为单个产品部署到maven存储库中,或者可以这样做一步到位?
>如果我想制作补丁版本并不一定意味着使用特定模块的最新版本,这将如何工作?
谢谢
解决方法:
对于问题“编辑”部分中描述的场景,我建议将所有war文件放在一个:multi模块项目中.
内容总结
以上是互联网集市为您收集整理的java – 使用Jenkins的Maven – 更新父pom版本的依赖项全部内容,希望文章能够帮你解决java – 使用Jenkins的Maven – 更新父pom版本的依赖项所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。