2

我正在使用 Maven 3。

我有多个 Maven 项目,即:“数据模型”、“服务”和“演示”,分为 3 个不同的项目。它们是单独配置的(即不使用 maven parent pom)。

项目设置

我在我的项目上正确设置了 maven 发布插件,这样当我mvn release:clean release:prepare release:perform在每个单独的项目上运行时,它会更新项目版本(即:从 3.4.5-SNAPSHOT 到 3.4.5)以及所有其他内容。

这里的问题是,“展示”依赖于“服务”依赖于“数据模型”,我在 pom 文件中引用了带有版本号的项目。

例如,当我开发时,我会将“演示文稿”中的“服务”称为 3.4.5-SNAPSHOT。但是在部署期间,我必须发布“服务”以将版本更改为 3.4.5,然后我必须在“演示”中更新“服务”的版本引用,然后才能在“演示”上运行发布。

是否有一种自动化的方式来做到这一点,这样我就不需要在发布期间更新依赖项目的引用?

感谢以下评论,我有什么:更新:25/03/2013

使用以下命令运行 Maven:

versions:use-releases -Dmessage="update from snapshot to release" scm:checkin release:clean release:prepare release:perform

结果:版本更新,但发布构建失败。

4

1 回答 1

4

Versions Maven 插件可以帮助您实现需求,尤其是目标版本:use-releases。您可能对目标版本感兴趣:use-next-releases版本:use-latest-releases

边注:

通常,好的做法是将它们定义为 Maven 多模块(此处此处)。这使我们可以更轻松地管理版本,如下例所示。

父母

<groupId>my-group</groupId>
<artifactId>my-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

    .....

<modules>
    <module>my-model</module>
    <module>my-service</module>
    <module>my-ui</module>
</modules>

我的模型

<parent>
    <groupId>my-group</groupId>
    <artifactId>my-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>my-model</artifactId>

我的服务

<parent>
    <groupId>my-group</groupId>
    <artifactId>my-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>my-service</artifactId>
<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>my-model</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

我的用户界面

<parent>
    <groupId>my-group</groupId>
    <artifactId>my-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>my-ui</artifactId>
<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>my-service</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

对于上面的例子,我们发布的时候,相关的版本会根据父版本自动更新。

于 2013-03-25T02:31:38.713 回答