【发布时间】:2015-04-15 06:52:59
【问题描述】:
我最近将基于 NetBeans 平台 (NBP) 的应用程序从 Ant 迁移到 Maven。我几乎想通了 Maven,但有一件事我仍然无法理解,那就是版本系统/约定。
似乎 Maven 世界中拥有由多个模块组成的大型 Maven 项目的每个人都使用一个父 pom,他们在其中定义一个版本,然后由所有子 pom 继承(即 Maven NetBeans RCP 项目中的所有 NBP 模块) .
例如,看一下 maven book 中示例项目的最终结果: http://books.sonatype.com/mvnex-book/reference/optimizing-sect-final-poms.html
您将看到由父 POM 定义的一个版本,
<groupId>org.sonatype.mavenbook.optimize</groupId>
<artifactId>simple-parent</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
由每个子模块继承,通过指定父模块而不使用它自己的任何标签:
<parent>
<groupId>org.sonatype.mavenbook.optimize</groupId>
<artifactId>simple-parent</artifactId>
<version>1.0</version>
</parent>
对于它的内部(项目内)依赖,每个子模块都定义了这个相对于项目的:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>simple-weather</artifactId>
<version>${project.version}</version>
</dependency>
这意味着您不能将一个模块更新到更高版本,因为它会查找具有相同版本号的依赖项,而这些依赖项不存在。更不用说在使用versions-maven-plugin时为任何子模块使用单独的版本会让您头疼,因为您最终会对依赖项进行微观管理。
这似乎完全违背了 NetBeans 平台的自动更新/生命周期/发布理念。在那里我可以更新一个模块并生成一个新的updates.xml(“Package as NBMs”),当上传到 AutoUpdate 存储库时,客户端只会看到那个更新。似乎如果您以 Maven 方式 (mvn nbm:autoupdate) 执行此操作,所有模块都会出现版本提升,因此通过模块自动更新的整个模型都会付诸东流。
我希望我弄错了,有一个功能可以恢复平台附带的强大的自动更新功能,某种额外的版本号会自动添加到major.minor.revision 号或一些智能的覆盖方式OpenIDE-Module-Specification-Version = major.minor.revision 在两个版本之间。对于客户端模块的每次微小更新,我是否必须发布新版本的应用程序?
【问题讨论】:
标签: java maven netbeans auto-update netbeans-platform