问题标签 [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.
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
...
谢谢您的帮助 ;)
java - 找不到“build-helper-maven-plugin”?
在我的 POM 文件中,我包括:
始终在 POM 文件中以红色显示这些
我尝试了很多东西,例如,我通过使用 Intellij IDEA 右侧的 MAVEN 设置更新了 MAVEN,但没有成功。总是当我编译时出现以下消息:
你能告诉我是什么原因,有什么解决办法吗?
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 版本),我怎样才能默默地跳过额外的工件?
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
依赖关系及其测试仅在测试时包含:
如果我将范围从test
to更改为compile
或provided
Javadoc 生成也会失败并出现错误,例如
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 实际上能够生成整个报告?
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 例如
我将不胜感激任何有用的提示。
java - 编译错误:包 my.package.root.util 不存在
我有一个 Eclipse Java 项目,我正在尝试使用 Maven 执行单元测试。
我有如下的单元测试,以便它尊重预期的层次结构
但是,我的单元测试引用了位于以下位置的源代码:
只是因为它一直都是这样,我不想为测试更改我的文件夹层次结构。
因此,我使用 build-helper-maven-plugin 来添加这个源文件夹,如下
但即便如此,我还是收到以下错误:
下面是我对 maven-surefire-plugin 的引用
如果我不进行测试,情况会更糟
但在这里例如:
maven-surefire-plugin 将显示
java - org.junit.platform.launcher.listeners.UniqueIdTrackingListener 为方法抛出异常:testPlanExecutionStarted()
我在我的 maven 构建中运行我的单元测试,但是当我在 GitHub Action 而不是本地运行它时,我得到了以下异常。
我正在使用 maven-surefire-plugin 和 JUnit5。任何想法这里出了什么问题?
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
来保留端口吗?