【问题标题】:Why is maven release skipping my child modules为什么 maven 版本会跳过我的子模块
【发布时间】:2014-07-10 15:38:59
【问题描述】:

我要做的是为我们所有的子项目推出几个父 pom。我有一个项目,其中包含一个带有两个子模块 pom 的父 pom。如果这有所不同,所有三个的包装都是 pom 类型的。当我部署时,虽然它未能部署子模块说它们被跳过了。

父 Pom

    <groupId>com.test.cpbx</groupId>
    <artifactId>parent</artifactId>
    <packaging>pom</packaging>
    <version>1.1-SNAPSHOT</version>
    <name>Parent Pom</name>


    <scm>
            <connection>scm:svn:https://url/trunk</connection>
    </scm>

    <modules>
            <module>appia</module>
            <module>rialto</module>
    </modules>

    <build>
            <plugins>
                    <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-release-plugin</artifactId>
                            <configuration>
                                    <goals>deploy</goals>
                                    <providerImplementations>
                                            <svn>javasvn</svn>
                                    </providerImplementations>
                            </configuration>
                            <dependencies>
                                    <dependency>
                                            <groupId>com.google.code.maven-scm-provider-svnjava</groupId>
                                            <artifactId>maven-scm-provider-svnjava</artifactId>
                                            <version>2.0.5</version>
                                            <scope>compile</scope>
                                    </dependency>
                            </dependencies>
                    </plugin>
            </plugins>
    </build>

    <dependencies>
            <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.11</version>
            </dependency>
    </dependencies>

这是我的一个孩子 pom,它们是相同的,唯一的变化是 artifactId 名称

子 POM

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>

        <parent>
                <groupId>com.test.cpbx</groupId>
                <artifactId>parent</artifactId>
                <version>1.1-SNAPSHOT</version>
        </parent>

        <artifactId>rialto-parent</artifactId>
        <packaging>pom</packaging>
        <name>Rialto Parent POM</name>

</project>

输出

mvn  -B -DreleaseVersion=1.1 -DdevelopmentVersion=1.2.0-SNAPSHOT   release:prepare -DdryRun 

...
[INFO] Not removing release POMs
[INFO] Executing completion goals - since this is simulation mode it is running against the original project, not the rewritten ones
[INFO] Full run would be commit 3 files with message: '[maven-release-plugin] prepare for next development iteration'
[INFO] Release preparation simulation complete.
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] Parent Pom ........................................ SUCCESS [2.573s]
[INFO] Appia Parent POM .................................. SKIPPED
[INFO] Rialto Parent POM ................................. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.749s
[INFO] Finished at: Wed May 21 14:52:30 CDT 2014
[INFO] Final Memory: 15M/114M
[INFO] ------------------------------------------------------------------------

【问题讨论】:

  • 可能是因为父 pom 上的 modules 标签指向子 pom 上的错误 artifactiId rialto-parent
  • 感谢 Jorge,但这并没有解决问题。我确实尝试将目录和模块重命名为与目录相同。我以前使用过它,模块条目实际上只是指向子目录的指针,artificactId 将用于子模块的实际名称。我确实尝试过,但没有成功。这一定很简单。

标签: java maven maven-3 maven-release-plugin


【解决方案1】:

maven 的输出有些混乱。

输出并不意味着它正在跳过构建模块或部署模块。

这是关于版本重构的消息。输出告诉我们父 pom 拥有版本,子版本依赖于父 pom。这意味着它不需要重构子模块 pom.xml,因此它将反应器摘要中的子模块打印为SKIPPED

【讨论】:

    【解决方案2】:

    另一种可能性是,这意味着该过程在能够构建这些模块之前没有工作:

    在激活并行执行的情况下,它可以显示如下内容: [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] Parent Pom ........................................ SUCCESS [2.573s] [INFO] Child1 POM ........................................ SKIPPED [INFO] Child2 POM ........................................ SKIPPED [INFO] Dependent Sibling POM ............................. FAILURE [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------

    如果依赖的同级需要 Childx 工件之一,它甚至可以在构建之前请求依赖。这会导致整个构建失败。

    认为最后一个失败只是因为另一个在构建过程中丢失,这是一种误导。概览中的 ABORTED 状态会节省一些时间。

    【讨论】:

      猜你喜欢
      • 2017-05-30
      • 2021-01-06
      • 2014-12-14
      • 1970-01-01
      • 2019-12-15
      • 2012-12-27
      • 1970-01-01
      • 2012-05-30
      • 2018-06-22
      相关资源
      最近更新 更多