当前位置: 首页 > 知识库问答 >
问题:

在发布子模块时,如何解决“由于未发布的依赖关系而无法发布项目”的问题?

拓拔坚
2023-03-14

我正在使用Maven 3.1.1,并尝试使用Maven发布插件来发布多模块项目的子模块。父模块已释放,而此子模块不在父模块的子模块列表中。在我的子模块pom中。xml文件,我有

    <parent>
            <artifactId>subco</artifactId>
            <groupId>org.mainco.subco</groupId>
            <version>52.0.0-SNAPSHOT</version>
    </parent>
    <name>myproject</name>
    <url>http://maven.apache.org</url>

    <dependencyManagement>
            <dependencies>
                    <dependency>
                            <groupId>org.mainco.subco</groupId>
                            <artifactId>core</artifactId>
                            <version>${project.version}</version>
                    </dependency>
   </dependencyManagement>

    <dependencies>
            ...
            <dependency>
                    <groupId>org.mainco.subco</groupId>
                    <artifactId>core</artifactId>
            </dependency>

但是,当我运行下面的

mvn -B -DdevelopmentVersion=52.0.1-SNAPSHOT -DreleaseVersion=52.0.0 -Dusername=***** -Dtag=myproject-52.0.0 -DskipTests -P prod -Dresume=false -DdryRun=true -DallowTimestampedSnapshots=true org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare

我得到了错误

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare (default-cli) on project myproject: Can't release project due to non released dependencies :
[ERROR] org.mainco.subco:core:jar:52.0.0-SNAPSHOT:compile
...
[ERROR] org.mainco.subco:subco:pom:52.0.0-SNAPSHOT

我无法更改父pom中的任何属性。xml文件…在子模块中我可以做些什么来让上面的命令成功运行吗?我喜欢使用“${project.version}”,因为我不必在pom中硬编码版本。还要注意,我使用的“-DallowTimestampedSnapshots=true”被忽略了。

编辑:

甚至在pom中添加一个单独的版本元素,就像这样

    <parent>
            <artifactId>subco</artifactId>
            <groupId>org.mainco.subco</groupId>
            <version>52.0.0</version>
    </parent>

    <name>myproject</name>
    <url>http://maven.apache.org</url>
    <version>52.0.0-SNAPSHOT</version>

导致与上述相同的错误。

共有3个答案

程谭三
2023-03-14

对于那些通过google搜索错误的用户:检查您的pom中是否有任何依赖项。包含单词快照的xml。或者,如果项目版本有快照,并且一个或多个依赖项使用项目版本:

<version>${project.version}</version>

原因是maven根本不允许mvn版本中的快照依赖项:prepare。

您也可以使用选项DignoreSnapshots=true,但要小心使用,并且只有在您知道自己在做什么的情况下,否则最终会释放快照依赖项!!

设置-DignoreSnapshot=true后,mvn发布:准备很好,我可以在日志中看到:

17:34:54 [INFO] Ignoring SNAPSHOT depenedencies and plugins ...
左丘元徽
2023-03-14

使用父级的正式版本。

<parent>
    <artifactId>subco</artifactId>
    <groupId>org.mainco.subco</groupId>
    <version>52.0.0</version>
</parent>

您还需要指定当前项目的版本;由于它没有随父级一起发布,因此需要有自己的version元素。

白腾
2023-03-14

因为我依赖的子模块与父模块的版本相同,所以我更改了

${project.version}

${project.parent.version}

使用编辑中的版本配置,错误就消失了。

 类似资料:
  • 我有一个用@RequiresDependencyResolution测试注释的mojo。 通过对github上的surefire代码的简单扫描,它看起来也使用RequiresDependencyResolution=Test,但是能够在这个项目上运行而没有问题。 https://github.com/apache/maven-surefire/blob/master/maven-surefire-

  • 在Windows 10系统上重新安装Repast Symphony 2.5.0(Win 64bit)和JDK 9.0.1后,导入JZombies_Demo示例时,无法使用默认配置启动模型。 错误显示: 当我编辑默认运行配置时,在依赖项选项卡中,我只看到JRE系统库,没有其他内容。在同一个选项卡中,恢复默认条目被启用-当我按它时,来自Repast Symphony的所有依赖项都被添加,并且之前的错误

  • 目的 本文档是一个技术指导性文件,用于说明“ ThingJS 项目离线部署包”安装使用的相关问题。 说明 ThingJS 项目离线部署包可由已开通 ThingJS 3D 可视化开发平台(https://www.thingjs.com) VIP商业开发者的账号进行下载。 ThingJS 项目离线部署包的正式部署授权购买者也可获得项目离线部署包。但建议项目离线部署包的正式授权者开通 VIP 商业开发者

  • 如何发布npm模块 那么我们来发布一个吧,顺便学习一下如何发布npm模块 登陆npm 发布 ➜ require-dictory git:(master) ✗ nrm use npm Registry has been set to: https://registry.npmjs.org/ ➜ require-dictory git:(master) ✗ npm login Usern

  • 我所拥有的是一个maven存储库(nexus),maven一直在向其发布。在我的构件存储库文件夹中的每个构件版本文件夹中都有标准的maven构件:maven-metadata.xml、jar和pom.xml等。 现在我想用gradle来解决这些问题。在我的gradle.build文件中,如果我将它们列为: 然后它们会正确地解决。但是,我想使用版本“latest.integration”,这样我就可

  • 本文向大家介绍关于vue.js发布后路径引用的问题解决,包括了关于vue.js发布后路径引用的问题解决的使用技巧和注意事项,需要的朋友参考一下 本文主要给大家介绍了关于vue.js发布后路径引用问题的解决方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 在发布到iis目录下时候,如果放在网站的根目录下的时候,是不会有什么问题的 但是一旦放在了非根目录的其他文件夹里面,这时候in