【发布时间】:2016-04-11 07:09:04
【问题描述】:
我有一个用于创建新项目的原型。在项目创建时(即当有人执行mvn archetype:generate 时)我想将一些依赖项固定到当时可用的RELEASE 版本(我强烈反对将<version>RELEASE</version> 放在POM 文件中)。
有没有一种方法可以让原型解析RELEASE 版本并为某些库固定它。
我现在解决这个问题的唯一方法是每次发布一些核心库时发布新版本的原型,然后对archetype-resources/pom.xml中的那些进行硬编码版本
我确实看到了几个类似的问题,但没有一个适合我的解决方案。
正如我已经提到的,我想在从原型创建项目时固定可用的最新版本。使用 `RELEASE 意味着我不能从相同的源代码重新创建二进制文件,因为我最终会获取不同版本的依赖项。
让我用具体的例子来解释。
- 我有一个带有 maven 坐标
com.my-company:my-awesome-framework:1.0的原型。 - 我有一个带有 maven 坐标的库
com.my-company:core-lib:1.0。 -
Developer-1 运行命令
mvn archeype:generate my-awesome-framework。他填写所需的详细信息并创建名为service-foo的项目。service -foo具有依赖关系core-lib和此后。 - 我们为
core-lib添加更多功能并发布版本2.0 -
Developer-1 构建
service-foo它仍然使用core-lib版本1.0构建。 (因为他没有更改项目的POM文件的版本。如果我使用<version>RELEASE<version>作为'core-lib, this timeservice-foowould have built with version2.0of thecore-lib`) -
Developer-2 运行
mvn archetype:generate my-awesome-framework。他填写了必填字段并创建了一个名为service-bar的服务。现在这一次是因为core-lib版本2.0。请注意,我没有修改my-awesome-archetype来更新core-lib内部archetype-resources\pom.xml的版本
我希望这能澄清我的用例
【问题讨论】:
-
我不同意,这是一个独特的不同问题——RELEASE 将始终拉入最新版本,即使在项目生成之后也是如此。他想在生成时固定版本。
标签: java maven maven-2 maven-3 maven-archetype