问题标签 [build-helper-maven-plugin]

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 投票
1 回答
894 浏览

maven - 使用 build-helper-maven-plugin

我有下面的 pom.xml。

我想tag使用以下命令将属性传递给我的构建:

mvn clean package -Dtag=test

它应该将此属性拆分为另外两个,my.group一个my.version,然后在一个 URI 中使用它来构建一个 XLDeploy 包,使用xldeploy-maven-plugin( https://docs.xebialabs.com/xldeploy-maven-plugin/6.0.x/ )。

我的问题是regex-properties目标实际上是在完成这项工作,正如我所看到的,这要归功于maven-antrun-plugin

但是该命令grep fileUri target\deployit-working-dir\deployit-manifest.xml显示 Uri 中的变量没有被替换:

POM 是以下文件:

我不太确定build-helper-maven-plugin我的 POM 中是否有错误或其他任何地方,或者是否只是缺少替换xldeploy-maven-plugin...

谢谢您的帮助 ;)

0 投票
0 回答
2751 浏览

java - 找不到“build-helper-maven-plugin”?

在我的 POM 文件中,我包括:

始终在 POM 文件中以红色显示这些

我尝试了很多东西,例如,我通过使用 Intellij IDEA 右侧的 MAVEN 设置更新了 MAVEN,但没有成功。总是当我编译时出现以下消息:

你能告诉我是什么原因,有什么解决办法吗?

0 投票
0 回答
154 浏览

maven - 当文件不存在时避免附加 Maven 工件

我正在使用 Build Helper Maven 插件将 SQL 更改附加为部署的工件,但是当额外的工件不存在时,插件会崩溃。

无法安装工件 org.test.app1:app1:sql:1.2.1: app1/src/main/database-source/1.2.1/dba.sql (没有这样的文件或目录) -> [帮助 1]

大多数应用程序版本都存在 SQL 文件,但并非所有应用程序版本都存在 SQL 文件,因为次要应用程序版本可能不包含 SQL 更改。SQL 文件的目录结构分别包括它们的版本,如下所示:

我正在使用的 Build Helper 插件配置是:

我读过<skipAttach>标签,但不明白如何使用它。

当文件不存在时(如上面的 1.2.1 版本),我怎样才能默默地跳过额外的工件?

0 投票
1 回答
551 浏览

java - maven-javadoc-plugin:如何动态更新模块路径

我有一个包含以下模块声明的 Java (11.0.7) Maven (3.0.6) 多模块项目:

这些 Maven 模块中的每一个都包含一个module-info定义必要的要求和导出以限制访问和可见性。

因此,jdrum-datastore-simple有一些我在 的测试中重用的测试实用程序类jdrum。通过下面的代码片段在 config 中配置 surefire 插件,jdrum我可以毫无问题地打包整个项目。

在父 POM 中,我还通过site参数配置了报告的生成,该参数还生成了相应项目的 Javadoc。包含 javadoc 的 JAR 的配置以及作为报告一部分的 Javadoc 生成的配置都是相同的,如下所示:

package作为生成 as 输出的步骤的一部分的 Javadoc 生成project-version-javadoc.jar成功,因为jdrum-datastore-simple依赖关系及其测试仅在测试时包含:

如果我将范围从testto更改为compileprovidedJavadoc 生成也会失败并出现错误,例如

Exit code: 1 - javadoc: error - The code being documented uses packages in the unnamed module, but the packages defined in https://github.com/RovoMe/JDrum/jdrum-datastore-simple/apidocs/ are in named modules.

据我了解,这里的问题是该jdrum-datastore-simple模块未添加到Javadoc的模块路径中。因此,下一个合乎逻辑的步骤是将该模块添加到配置中,如下所示:

这会将jdrum-datastore-simple模块添加到 Javadoc 配置字符串中,可以在jdrum/target/site/apidocs/options现在包含

入口。在进一步分析生成的options文件时,很明显模块路径缺少对实际 JAR 文件的引用,因此没有生成 Javadoc,因此 Maven 进程由于 Javadoc 无法找到定义的模块而失败。如果我更新该选项文件并将路径添加到丢失的 JAR 文件然后只执行mvn package site整个过程成功并且一切都很好(因为位于 target/site/apidocs 文件夹中的 javadoc.bat 的纯调用也会如此)。

现在,为了使整个过程更加动态,我想添加或更新模块路径。但是,maven-javadoc-plugin 并不直接允许这样做。因此,我想出了添加一个进一步的 maven-javadoc-plugin 选项--module-path和一个包含整个路径的进一步选项条目。整个路径是指每个依赖项的路径,所以不仅仅是jdrum-datastore-simple. 这也有效,但由于对各个 JAR 文件的路径进行了硬编码,因此该项目现在不能被其他用户使用,除非他们具有我使用的相同系统和路径结构。为了解决这个问题,我快速将相应的路径结构替换为${settings.localRepository}${project.parent.basedir}模块路径中各个模块的属性。不幸的是,Javadoc 在它接受的路径结构上相当挑剔,事实证明,在我的 Windows 机器上,Maven 确实返回了一个C:\Users\...Javadoc 无法处理的路径结构。如果路径结构看起来像C:/Users/...但是 Javadoc 对值很好。

在进一步的研究中,我偶然发现了这个线程,它建议使用 Mavenbuild-helper-maven-plugin定义新属性,即 M2 存储库,并使用内置的 reg-ex 功能将\字符替换为/. 但是,添加配置,例如

并且使用引入的标签根本不起作用,因为 Maven 抱怨提供的值无效。如果我使用$\{settings.localRepository}Maven 对提供的值很好,但是在最终的选项文件中,实际的值不会settings.localRepository更新,而是提供的字符串本身,我最终会得到类似$/{settings.localRepository}/org/slf4j/...Javadoc 无法解析的东西,因此仍然错过了jdrum-datastore-simple依赖项的正确位置。

那么,如何将缺少的依赖项的路径添加到生成的选项文件中定义的 maven-javadoc-plugin 的模块路径中,以便 Maven 实际上能够生成整个报告?

0 投票
0 回答
26 浏览

java - 使用提取的 java 源代码与 maven 一起编译

我正在使用 maven-dependency-plugin 从一个大 jar 中提取一些类并将它们添加到我的项目类中。对,不,有 2 个 jar,每个构建都有一个分类器:源和帮助器。源 jar 包含所有 java 文件。助手 jar 具有完全依赖的大多数类(没有 java 文件的类)。

由于我需要缺少的类,我想将所有 java 文件从“sources”-classifier-jar 提取到 target/extracted/src,而不是将类从“helper”-classifier-jar 提取到 target/classes,然后编译它们。由于我的项目依赖于已编译的类,因此我在生成源阶段运行依赖插件。

有人知道我如何实现这一目标吗?我究竟做错了什么?我尝试使用编译器插件添加源目录(将是依赖插件的输出目录),但我无法构建项目。它没有找到课程。

在我的项目java类的某个地方,我引用了 Bar.class 例如

我将不胜感激任何有用的提示。

0 投票
2 回答
49 浏览

java - 编译错误:包 my.package.root.util 不存在

我有一个 Eclipse Java 项目,我正在尝试使用 Maven 执行单元测试。

我有如下的单元测试,以便它尊重预期的层次结构

但是,我的单元测试引用了位于以下位置的源代码:

只是因为它一直都是这样,我不想为测试更改我的文件夹层次结构。

因此,我使用 build-helper-maven-plugin 来添加这个源文件夹,如下

但即便如此,我还是收到以下错误:

下面是我对 maven-surefire-plugin 的引用

如果我不进行测试,情况会更糟

但在这里例如:

maven-surefire-plugin 将显示

0 投票
0 回答
487 浏览

java - org.junit.platform.launcher.listeners.UniqueIdTrackingListener 为方法抛出异常:testPlanExecutionStarted()

我在我的 maven 构建中运行我的单元测试,但是当我在 GitHub Action 而不是本地运行它时,我得到了以下异常。

我正在使用 maven-surefire-plugin 和 JUnit5。任何想法这里出了什么问题?

0 投票
0 回答
25 浏览

maven - 为什么“build-helper-maven-plugin”的“reserve-network-port”目标没有按预期工作?

我使用 Maven 的build-helper-maven-plugin目标reserve-network-port是稍后在我的 Maven 构建中分配端口以启动 Cargo 容器,以运行一些集成测试

问题是,即使该端口似乎已被插件打开并保留,Cargo 容器也无法启动,告诉我分配的端口已在使用中。这个错误是随机发生的,所以很难重现

当我在本地运行 Maven 构建时它可以工作,但是当我在 Jenkins 的服务器上运行它时通常会失败

这是我的reserve-network-port配置:

这是我的货物容器的配置部分

最后是我在启动容器时遇到的错误:

有谁知道为什么港口的预订失败?

还有其他替代方法可以使用它build-helper-maven-plugin来保留端口吗?