Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 有没有办法级联父pom的版本?_Maven_Maven 3 - Fatal编程技术网

Maven 有没有办法级联父pom的版本?

Maven 有没有办法级联父pom的版本?,maven,maven-3,Maven,Maven 3,我有一个根pom.xml,它充当几个子pom.xml文件的父文件,如果您有一个或两个子pom.xml文件,这非常好。我正在从事一个项目,该项目有50多个子pom.xml文件,并且同时发布了几个版本。在我需要更新父pom.xml文件的版本之前,一切都很好,这可能会很乏味。是否有办法将父pom.xml的版本级联到所有子pom.xml文件 我想在当前版本的父pom.xml中创建一个属性,但这不起作用 编辑 以下是我的孩子pom.xml文件中的一个示例: myGroup myArtifactId 1

我有一个根pom.xml,它充当几个子pom.xml文件的父文件,如果您有一个或两个子pom.xml文件,这非常好。我正在从事一个项目,该项目有50多个子pom.xml文件,并且同时发布了几个版本。在我需要更新父pom.xml文件的版本之前,一切都很好,这可能会很乏味。是否有办法将父pom.xml的版本级联到所有子pom.xml文件

我想在当前版本的父pom.xml中创建一个属性,但这不起作用

编辑

以下是我的孩子pom.xml文件中的一个示例:


myGroup
myArtifactId
1
../../pom.xml
另外,我在您的孩子pom.xml中使用Maven 3.0.3

<parent>
    <groupId>groupId</groupId>
    <artifactId>parent.artifactId</artifactId>
    <version>version</version>
    <relativePath>../parent-pom</relativePath>
 </parent>
 <artifactId>child.artifactId</artifactId>

groupId
parent.artifactId
版本
../父pom
人工幼体

我想你会有这样的事情:

+--root (pom.xml)
     +--- module1 (pom.xml)
     +---
在根pom.xml中:

<project ..>

  <groupId>the.company.project</groupId>
  <artifactId>the-artifact</artifactId>
  <version>1.0-SNAPSHOT</version>
  ...
</project>

公司项目

它处理root和child中版本的更新。如果你不使用maven release插件,你可以使用可以处理相同事情的插件。

只是不要将版本放在子POM中。它是自动继承的。如果您在Eclipse插件中进行编辑,它将显示为警告。

您可以这样做:

有一个聚合器POM项目,在该项目中指定所有子模块,然后在此聚合器项目上运行此目标:

mvn versions:update-parent
这将使用新的父版本更新所有子模块

或者,您可以在每次发布之前使用相同的方法:准备子模块的目标,从而避免创建聚合器模块

因此,如果您想发布子模块,只需运行以下目标:

mvn versions:update-parent release:prepare
这将确保在准备发布之前,父级会得到新版本的更新

我在你的评论中看到你缺少一个scm标签。在发生颠覆的情况下使用的示例可能是:

<scm>
    <developerConnection>scm:svn:https://your.domain/scm/svn/yourModule/trunk/</developerConnection>
</scm>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <configuration>
                <tagBase>https://your.domain/scm/svn/yourModule/tags</tagBase>
            </configuration>
        </plugin> 
    </plugins>
</build>

scm:svn:https://your.domain/scm/svn/yourModule/trunk/
org.apache.maven.plugins

我也有同样的问题,我所做的与目前为止的建议略有不同。假设您的项目具有以下文件夹结构:

parent
+-- child1
     +-- child2_of_parent
     +-- child3_of_parent
+-- child4
     +-- child5_of_child4
请注意,除了
child5\u/u-of-u-child4
,所有其他项目都以顶级项目
parent
为父项目。这与文件夹结构无关。 父级
pom.xml

<groupId>...</groupId>
<artifactId>...</artifactId>
<version>1.1-SNAPSHOT</version>
转到父目录,将其版本从
1.1-SNAPSHOT
更改为
1.2-SNAPSHOT
。然后你会做(更多细节):


因为这不是递归的,所以它只对父项目的直接子项目有效。换句话说,所有子模块都将更新为指向父级
1.2-SNAPSHOT
,除了
child5\u/u/u child4

看起来这是以前问过的问题@DaveRlz差不多了,但还没有完全消失。在回答中有一点是这样的:“要在子模块中使用父pom版本,只需从子pom中删除标记,它们就会从父pom继承该版本。”这不是你要做的吗?@DaveRlz我试着只使用groupId、artifactId和relativePath,但是maven不喜欢它,只需使用我在回答中描述的版本maven插件。在这种情况下,您不需要指定relativePath,因为父级是默认值。这取决于您的目录组织。在某些情况下,您可以在父目录中不包含子目录,因此需要指定relativepath;)很抱歉,我在尝试您的答案时遇到此错误:[错误]项目myGroup:验收测试:[未知版本](C:\git\my\u app\1.0\my\u app\acceptance tests\pom.xml)有1个错误[错误]“parent.version”丢失。@第8行,第列13@bakoyaro否。在中,您需要指定父级的版本。您没有指定child的版本。我正在尝试maven发布插件,但由于缺少scm属性,我遇到了一些错误。你知道最小的配置是什么吗?
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>1.1-SNAPSHOT</version>
 <parent>
  <groupId>...</groupId>
  <artifactId>parent</artifactId>
  <version>1.1-SNAPSHOT</version>
  <relativePath>../parent</relativePath>
 </parent>
mvn versions:update-child-modules