Ed *_*d . 5 build-process maven-2 maven-3 maven
我正在考虑重组一个大型Maven项目......
我们当前结构的基本概述:
build [MVN plugins, third party dependency management]:5.1
NRW Utils:6.0.0.0-beta12-SNAPSHOT
server-utils:6.0.0.0-beta12-SNAPSHOT
...
CMW Root:6.0.0.0-beta12-SNAPSHOT
cmw-webapp:6.0.0.0-beta12-SNAPSHOT
cmw-core [dependencies on NRW Utils]:6.0.0.0-beta12-SNAPSHOT
...
NRW Root :6.0.0.0-beta12-SNAPSHOT
nrw-webapp [depends on NRW Utils & CMW Root modules]:6.0.0.0-beta12-SNAPSHOT
...
Run Code Online (Sandbox Code Playgroud)
改变的原因:
每个集合模块(即NRW Utils,CMW Root和NRW Root)的大小越来越大,构建过程开始耗费无法忍受的时间(有时约为4小时).
新计划:
build [MVN plugins, third party dependency management]:5.1
NRW Utils:6.0.0.0-NU-beta4-SNAPSHOT
server-utils:6.0.0.0-NU-beta4-SNAPSHOT
...
CMW Root:6.0.0.0-CMW-beta12-SNAPSHOT
cmw-webapp:6.0.0.0-CMW-beta12-SNAPSHOT
cmw-core [dependencies on NRW Utils]:6.0.0.0-CMW-beta12-SNAPSHOT
...
NRW Root :6.0.0.0-NRW-beta9-SNAPSHOT
nrw-webapp [depends on NRW Utils & CMW Root modules]:6.0.0.0-NRW-beta9-SNAPSHOT
...
Run Code Online (Sandbox Code Playgroud)
我们已经开始在版本中引入"键"以区分不同的"集体模块",因此可以轻松执行步进版本.此外,我们的实用程序模块更稳定,因此我们可能不需要几乎同样多的beta版本 - 现在没有限制保持beta数同步.
值得注意的是,实际上有5个不同的"集体模块"(不仅仅是3个)都是用不同的版本构建的(以独特的键区分),这就是为什么我认为拥有一个集中的地方是很好的版本,而不是5个不同POM中的重复属性.
现在的问题在于在定义不同版本的不同"集合模块"中的模块的依赖关系时POM文件的内容.
建议的依赖版本管理解决方案:
build [MVN plugins, third party dependency management]:5.1
nrw-version-management:6.0.0.0-beta-SNAPSHOT
[contains properties defining latest versions of each collective module]
NRW Utils:6.0.0.0-NU-beta4-SNAPSHOT
server-utils:6.0.0.0-NU-beta4-SNAPSHOT
...
CMW Root:6.0.0.0-CMW-beta12-SNAPSHOT
cmw-webapp:6.0.0.0-CMW-beta12-SNAPSHOT
cmw-core [dependencies on NRW Utils]:6.0.0.0-CMW-beta12-SNAPSHOT
...
NRW Root :6.0.0.0-NRW-beta9-SNAPSHOT
nrw-webapp [depends on NRW Utils & CMW Root modules]:6.0.0.0-NRW-beta9-SNAPSHOT
...
Run Code Online (Sandbox Code Playgroud)
nrw-version-management(pom.xml):
...
<parent>
<groupId>com.project</groupId>
<artifactId>build</artifactId>
<version>5.1</version>
</parent>
<groupId>com.project</groupId>
<artifactId>nrw-versions-manager</artifactId>
<version>6.0.0.0-beta-SNAPSHOT</version>
<name>Version Maven Properties</name>
<description>A centralised place for all module property versions</description>
<packaging>pom</packaging>
<properties>
<nrw.utilities.version>6.0.0.0-NU-beta4-SNAPSHOT</nrw.utilities.version>
<nrw.cmw.version>6.0.0.0-CMW-beta12-SNAPSHOT</nrw.cmw.version>
<nrw.version>6.0.0.0-NRW-beta9-SNAPSHOT</nrw.version>
</properties>
...
Run Code Online (Sandbox Code Playgroud)
CMW Root(pom.xml):
...
<parent>
<groupId>com.project</groupId>
<artifactId>nrw-versions-manager</artifactId>
<version>${nrw.core.version}</version>
...
</parent>
<groupId>com.project</groupId>
<artifactId>CMW-root</artifactId>
<version>6.0.0.0-CMW-beta12-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencyManagement>
<dependencies>
...
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>server-utils</artifactId>
<version>${nrw.utilities.version}</version>
</dependency>
...
</dependencyManagement>
<profiles>
<profile>
<id>all</id>
<modules>
<module>cmw-webapp</module>
<module>cmw-core</module>
...
</modules>
</profile>
...
</profiles>
...
Run Code Online (Sandbox Code Playgroud)
注意,属性$ {nrw.core.version}将通过命令行参数(或默认属性值)设置为6.3.0.0-beta-SNAPSHOT以进行快照构建.
可能的发布过程(适用于6.0.0.0):
问题:
构建过程看起来很冗长,特别是与nrw-version-management模块有关.另外,我开始看到这个警告:
'version'包含一个表达式,但应该是一个常量
并且做了一些调查我现在理解在设置版本时(当指定父POM时)不建议使用表达式:
问题:
提前致谢.
我认为在这个阶段在整个项目中坚持使用单一版本是不可行的,因为构建过程现在需要很长时间(前几天它在 7 小时后失败了!!)。
然而,下面的两个链接并没有完全回答我的问题,但已经达到了目的:
归档时间: |
|
查看次数: |
2643 次 |
最近记录: |