如何使用快照在Maven多模块项目中默认子模块版本?

时间:2014-01-17 13:35:17

标签: maven pom.xml snapshot maven-release-plugin parent-pom

我查看了之前有关该主题的问题,看起来人们比我现在的位置领先一步。 我目前正在尝试将maven发布插件用于我的多模块项目。我从头开始(更确切地说,我检索了一些旧项目以放入一个新的多模块项目。)

我有一个POM父母,我定义为:

<groupId>com.somestuff</groupId>
<artifactId>stuff</artifactId>
<version>10.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name> stuff </name>

我的子模块使用:

继承父模块
<parent>
    <groupId>com.somestuff</groupId>
    <artifactId>stuff</artifactId>
    <version>10.0.0-SNAPSHOT</version>
</parent>

因为它是一个新项目,我将模块之间的依赖关系指定为快照。例如,如果模块A依赖于模块B,我将向A的POM添加部分:

    <dependencies>
    <dependency>
        <groupId>com.somestuff</groupId>
        <artifactId>divarmiclient</artifactId>
     <version>10.0.0-SNAPSHOT </version>
    </dependency>
    </dependencies>

结果是当我尝试执行“mvn release:prepare”时,Maven会大声说存在快照依赖项。但由于它是一个全新的项目,并且10之前的版本不存在,我不知道如何默认模块的版本值。 我的问题是,我该如何默认模块值?如何从快照角度使我的多模块项目可接受?

1 个答案:

答案 0 :(得分:5)

为了澄清,你说你的结构是:

theparent
  pom.xml
  A/
    pom.xml
  B/
    pom.xml

以下假设都适用:

  • theparent,A和B当前使用相同版本
  • 版本将始终从'theparent'级别启动,以便保持在同一版本
  • A取决于B,始终是相同的版本

然后解决方案如下:

<dependency>
    <groupId>com.somestuff</groupId>
    <artifactId>B</artifactId>
 <version>${project.version}</version>
</dependency>