问题标签 [parent-pom]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3385 浏览

java - Maven——是否有下载所有依赖 jar 的父 pom 的命令?

我知道我们可以下载依赖 jar ......但是我们可以下载所有依赖 jar 的父 pom 吗?

例如项目 A 引入库 B 作为依赖项,但库 B 有父 pom C.xml。

我想找到一个在 Bs 和 C.xml 中下载所有 pom.xml 的命令。

理想情况下,如果 C.xml 有另一个父 pom D.xml,我也想下载它。

0 投票
1 回答
488 浏览

java - 使用 ivy 以编程方式解决 POM 依赖关系,但不使用源代码和 javadoc

使用这种方法,我可以成功地解决(但不检索实际的 jars)库的所有依赖关系,当它的组织、名称和修订被给出时,所有这些都使用 Apache Ivy 以编程方式。

在解析过程中,它解析给定库的 POM 并在指定的情况下找到父 POM,并且 Ivy 的 POM 解析器总是尝试解析源和 javadoc,这对于父 POM 通常不存在。

问题是,当向我们的本地工件查询一个不存在的 jar 的 URL 时,刷新它的缓存需要 2~3 秒,当我有许多具有父 POM 的传递依赖项时,总依赖项解析时间加起来几十分钟。

例如,以下是我尝试解析 Google Guava 17.0 时收到的日志消息:

您可以看到 Ivy 在尝试父 POM 的不存在-sources.jar的 , -src.jar, URL 时浪费了几秒钟。-javadoc.jar

解析父 POM 时是否有禁用此行为的选项?理想情况下,我不想.jar在解析期间向任何 s 发出 HTTP 请求。目前我需要一个编程解决方案,但如果有人知道命令行/XML 选项,那将是一个很大的帮助。

PS:我觉得用sbt解决库依赖的时候也是这样的;oss-parent解决等需要很长时间commons-parent

0 投票
2 回答
962 浏览

maven - Maven 站点文档:添加指向其他文档的链接

我想使用 Maven 站点插件生成项目文档。“项目信息”和“项目报告”的默认布局、结构和功能对我来说是可以的。但是我想添加一个额外的(第三个)部分“附加文档”,如果项目中有这样的文档,它会链接到更多的文档。

我可以创建一个目录 src/site/resources/otherDocu,然后文件将根据需要复制到该 target/site/otherDocu 目录中。但是,生成的站点不会链接到它们。

我想要第三部分“附加文档”,其中列出并链接了上述目录中的文件。我想用尽可能小的开销来做到这一点。具体来说,如果可以避免,我不想像site.xml许多解决方案中描述的那样包含自己的,以及 css 等。如何使用默认站点配置并仅“注入”一部分?或者,如果这是唯一的方法,那么应该可以site.xml在父 POM 中只配置一次文件(比如 )并为所有其他项目继承它。我怎样才能让它列出找到的文件src/site/resources/otherDocu并显示它们的链接?

或者,我也在考虑:我可以编写一个自己的报告插件,它可以做到这一点,然后我只需要在 POM 的“报告/插件”部分指定这个插件,就像我为其他报告插件所做的那样. 使用此解决方案,我可能可以在“项目报告”部分创建一个附加条目,就像其他所有报告插件一样,这是朝着正确方向迈出的一步。但是我需要几个条目(因为有几个链接的文档),或者一个带有子条目的条目“附加文档”。

哪条路更容易走?您有推荐或类似的解决方案吗?有没有人有一个文件(site.xml或类似文件)已经做了一些列表,不需要所有其他资源(图像等)并且可以继承?

0 投票
1 回答
98 浏览

java - 父 POM 中的版本声明

哪个标签适合声明子 POM 中使用的依赖项版本,即 Properties 标签或 DependencyManagement 标签?他们各自的优点和缺点是什么?有没有更好的办法?

0 投票
1 回答
1728 浏览

java - 如何更新 Maven POM 中的版本号

我们有一个非常模块化的 Maven pom 设置,常见的 jars 和特定的 jars 都被捆绑到一个战争和耳朵中。由于在 70 多个模块中有如此多的重用,我们不使用多模块,每个模块可以并且确实有自己的生命周期,并且可以独立于任何其他模块发布。

所有模块都从各种父 pom 继承,最终每个 pom 都从 master POM 继承,其中定义了所有外部版本,例如 spring 和常见的本地模块版本。

在我们发布之前,这可以正常工作。如果主 POM 需要更改(它偶尔会这样做),则所有pom 都需要以一种或另一种方式更新。我知道 maven 版本插件可以使用最新的 SNAPSHOT 版本等更新特定的 POM,但这仅适用于单个 POM 级别。

一旦发布完成,我们希望能够迭代地更改所有 pom。

我们不使用多模块 POM,也无法更改构建过程以使用此机制。

我已经阅读了 SO,最接近问题的地方就在这里。 https://stackoverflow.com/a/3615417/1279002

编写 shell 脚本似乎是一种解决方案,但我们有一个 Windows 和 Linux 混合的开发和构建系统。我相信其他人会解决这个问题。有人可以建议他们如何解决这个问题吗?

0 投票
1 回答
7343 浏览

java - 项目构建错误:不可解析的父 POM

我只是将这个项目导入到我的本地 Eclipse 中,然后收到以下错误消息:

项目构建错误:不可解析的父 POM:无法从http://f5dmzprodf03.oami.europa.eu/nexus/content/groups/public传输 eu.ohim:esearch-parent:pom:1.8.0-RC2.1 /被缓存在本地存储库中,直到 nexus-releases 的更新间隔过去或强制更新后才会重新尝试解析。原始错误:无法将工件 eu.ohim:esearch-parent:pom:1.8.0-RC2.1 从/到nexus-releases(http://f5dmzprodf03.oami.europa.eu/nexus/content/groups/public / ): 连接重置和“parent.relativePath”指向错误的本地 POM

这是我的POM:

知道我缺少什么吗?谢谢

0 投票
2 回答
6917 浏览

maven - Gradle 无法解决 spring 依赖

我正在尝试使用以下build.gradle文件构建我的项目。

我添加了里程碑存储库,因为我需要 spring-data-mongodb 1.7.0.RC1 依赖项。但是,parent-poms 的引用似乎有问题,因为 gradle 无法获取以下依赖项:org.springframework.data.build:spring-data-parent:1.6.0.RC1

它退出并出现以下错误:

gradlew build --debug命令的输出可以在这里找到:http: //pastebin.com/seYRMFQP

该命令还向标准输出产生了以下输出: http: //pastebin.com/atcWQsKF

我已经尝试清理我的本地 gradle 缓存,但它没有解决问题。

0 投票
0 回答
177 浏览

maven - 聚合器 POM 上的 Maven 站点

我有一个聚合器 POM,并想为聚合器 POM 和包含模块创建一个站点。

我在聚合器 pom 上配置了以下内容

问题是每次我运行mvn site site:stage模块的链接都会断开。我发现的唯一可行的解​​决方案是将聚合器 POM 设置为模块上的父级。IE

在每个模块上

但这不是一个选项,因为我想让模块独立,只想为所有模块构建报告。

有没有办法在不修改模块的情况下创建站点?只修改聚合器 POM

0 投票
1 回答
2416 浏览

maven - 如何设置 maven 父 pom 以从子 rpm 构建 rpm

我有一个带有多个 pom 层的微服务项目。我已经设置为使用 'org.codehaus.mojo:rpm-maven-plugin:2.1.1' 插件为每个服务生成 rpm。我需要将其设置为生成一个 rpm,并将所有这些 rpm 作为所需的依赖项。

在父 pom 中,我添加了没有源但需要两个 rpm 包的设置。当我向父级添加相同的设置时,它失败了,我不明白我错过了什么。

例如:项目组 --ProjectCommon --Project1 --Project2

因此,ProjectCommon、Project1 和 Project2 都生成了自己的 rpm,并与它们的 pom 和 war 一起部署到我们的存储库中。Project1 和 Project2 需要通用且有效。我想做的是将相同的内容放在父 pom 中,这样它将构建一个需要子级的 rpm。然后不必安装每个 rpm,我可以安装 1 个父 rpm,它将拉/安装所有其他 rpm。

我应该补充一点,在这一层之上有两层父 pom,因为我们将服务分为业务服务和数据访问服务。然后还将服务与其他组件(如具有自己的 pom 的 gui/etc)组合在一起。但是,如果我让它与直接父母 pom 一起使用,那么它也应该适用于他们的父母。

这是我添加到父 pom 中的内容:

这是其中一个孩子:

这是错误:

[错误] 无法在项目 project-business-parent 上执行目标 org.codehaus.mojo:rpm-maven-plugin:2.1.1:attached-rpm (attach-rpm):RPM 构建执行返回:'1'正在执行'/ bin/sh -c cd '/workspace/project-pom/services/business/target/rpm/project-business-parent/SPECS' && 'rpmbuild' '-bb' '--target' 'noarch-pc-linux' '--buildroot' '/workspace/project-pom/services/business/target/rpm/project-business-parent/buildroot' '--define' '_topdir /workspace/project-pom/services/business/target/rpm /project-business-parent' 'project-business-parent.spec'' -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: 未能执行目标 org.codehaus.mojo:rpm-maven-plugin:2.1 .1:attached-rpm (attach-rpm) 在项目 project-business-parent 上:RPM 构建执行返回:'1' 执行 '/bin/sh -c cd '/workspace/project-pom/services/business/target/rpm/project-business-parent/SPECS' && 'rpmbuild' '-bb' ' --target' 'noarch-pc-linux' '--buildroot' '/workspace/project-pom/services/business/target/rpm/project-business-parent/buildroot' '--define' '_topdir /workspace/ project-pom/services/business/target/rpm/project-business-parent' 'project-business-parent.spec'' at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在 org.apache.maven.lifecycle。内部的。LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java: 183) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317) 在 org.apache.maven.DefaultMaven.execute (DefaultMaven.java:152) 在 org.apache.maven.cli.MavenCli.execute(MavenCli.java:555) 在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) 在 org.apache。 maven.cli.MavenCli.main(MavenCli.java:158) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl。invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher .Launcher.launchEnhanced(Launcher.java:289) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java :415) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 引起:org.apache.maven.plugin.MojoExecutionException:RPM 构建执行返回:'1' 执行'/bin/ sh -c cd '/workspace/project-pom/services/business/target/rpm/project-business-parent/SPECS' && 'rpmbuild' '-bb' '--target' 'noarch-pc-linux' '--buildroot' '/workspace/project-pom/services/business/target/rpm/project-business-parent/buildroot' '--define' '_topdir /workspace/project-pom/services /business/target/rpm/project-business-parent' 'project-business-parent.spec'' at org.codehaus.mojo.rpm.RPMHelper.buildPackage(RPMHelper.java:149) at org.codehaus.mojo.rpm .AbstractRPMMojo.execute(AbstractRPMMojo.java:633) 在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208 ) ... 19 更多_topdir /workspace/project-pom/services/business/target/rpm/project-business-parent' 'project-business-parent.spec'' 在 org.codehaus.mojo.rpm.RPMHelper.buildPackage(RPMHelper.java:149 ) 在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106) 在 org.apache.maven.lifecycle.internal 的 org.codehaus.mojo.rpm.AbstractRPMMojo.execute(AbstractRPMMojo.java:633)。 MojoExecutor.execute(MojoExecutor.java:208) ... 还有 19 个_topdir /workspace/project-pom/services/business/target/rpm/project-business-parent' 'project-business-parent.spec'' 在 org.codehaus.mojo.rpm.RPMHelper.buildPackage(RPMHelper.java:149 ) 在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106) 在 org.apache.maven.lifecycle.internal 的 org.codehaus.mojo.rpm.AbstractRPMMojo.execute(AbstractRPMMojo.java:633)。 MojoExecutor.execute(MojoExecutor.java:208) ... 还有 19 个apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 还有 19 个apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 还有 19 个

编辑:使用“mvn -X install”添加了更详细的错误。谢谢jdevelop!

0 投票
1 回答
633 浏览

maven-3 - 父 POM 采用的版本与我在模块版本中提供的版本相同

我有一个多模块 Maven 项目,例如

A B C D E 目前这个项目运行良好,只有一个工作来构建所有模块并上传到工件,例如 4.0.0-。他们正在使用版本:set -DnewVersion=4.0.0-${BUILD_NUMBER} Jenkins 工作。现在我的下一个任务是将这个项目拆分为模块,以便他们的开发团队可以独立构建每个模块,但我的问题是某些模块依赖于其他模块,例如

模块 B 依赖于模块 A 和模块 C。如果我先构建模块 A,然后它生成数字 4.0.0-00001 并将其上传到工件,然后我构建模块 C,然后它生成构建 4.0.0 -00005。现在问题来了,我如何构建依赖于模块 A 和 C 的模块 B。我认为我需要在依赖部分明确定义模块 A 和 C 的版本。

从我的模块 POM 我调用我的父 POM 并且在 jenkins 工作中我给出版本:set -DnewVersion=4.0.0-${BUILD_NUMBER} 用于版本控制,如果我明确定义 A 模块的版本,那么它也传递相同父 POM 的值并搜索它是不可用的。下面是我的模块 POM 文件

它为我分配给公共模块的父 POM 采用相同的值。我将父 POM 保存在单独的存储库中它不应该采用相同的值它应该只采用我为父 POM 定义的值并且它应该下载它来自他们并向模块 POM 提供所有值,并且应该为具有不同版本的模块 LicenseVerifier 创建构建。