build-helper-maven-plugin的使用

2023-05-16

build-helper-maven-plugin 插件主要的作用就是用来指定额外的源码路径和资源路径。它总共有15个goal:

  • build-helper:add-source Add more source directories to the POM.
  • build-helper:add-test-source Add test source directories to the POM.
  • build-helper:add-resource Add more resource directories to the POM.
  • build-helper:add-test-resource Add test resource directories to the POM.
  • build-helper:attach-artifact Attach additional artifacts to be installed and deployed.
  • build-helper:maven-version Set a property containing the current version of maven.
  • build-helper:parse-version Set properties containing the parsed components of a version string.
  • build-helper:regex-property Sets a property by applying a regex replacement rule to a supplied value.
  • build-helper:regex-properties Sets a property by applying a regex replacement rule to a supplied value.
  • build-helper:released-version Resolve the latest released version of this project.
  • build-helper:remove-project-artifact Remove project's artifacts from local repository.
  • build-helper:reserve-network-port Reserve a list of random and unused network ports.
  • build-helper:local-ip Retrieve current host IP address.
  • build-helper:cpu-count Retrieve number of available CPU.
  • build-helper:timestamp-property Sets a property based on the current date and time.

这里重点介绍一下attach-artifact这个goal,它的作用就是在安装或部署artifact的时候,附加的安装或部署一些其他资源或文件。

 

要使用 build-helper-maven-plugin,首先添加插件声明:


  <build>
  	<plugins>
  		<plugin>
  			<groupId>org.codehaus.mojo</groupId>
  			<artifactId>build-helper-maven-plugin</artifactId>
  			<version>1.9</version>
  		</plugin>
  	</plugins>
  </build>  

然后和其他插件一样,定义它的phase和goal。

 

attach-artifact默认的phase是package:


	<build>
		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>build-helper-maven-plugin</artifactId>
				<version>1.8</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>attach-artifact</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>  

剩下的就是configuratino配置了。

 

attach-artifact可用的配置如下:

必选

NameTypeSinceDescription
artifactsArtifact[]1.0Attach an array of artifacts to the project.

可选

NameTypeSinceDescription
basedirString1.5This project's base directory.
Default value is${basedir}.
runOnlyAtExecutionRootboolean1.5This will cause the execution to be run only at the top of a given module tree. That is, run in the project contained in the same folder where the mvn execution was launched.
Default value isfalse.
User property isbuildhelper.runOnlyAtExecutionRoot.
skipAttachboolean1.6This allows to skip the attach execution in case it is known that the corresponding file does not exists. For exemple, when the previous ant-run task is skipped with a unless.
Default value isfalse.
User property isbuildhelper.skipAttach.

这里只有artifacts是必选的;artifacts的说明如下:

artifacts:

Attach an array of artifacts to the project.
  • Typeorg.codehaus.mojo.buildhelper.Artifact[]
  • Since1.0
  • RequiredYes

其中的每个artifact是类型org.codehaus.mojo.buildhelper.Artifact。根据Artifact Doc说明,它只有三个可配置项:

  • file:指定欲附加的文件
  • type:指定文件类型
  • classifier:指定文件的附属信息

最后生成的文件名会是:


${artifactId}-${version}-${classifier}.${type}  

例如,想在安装或部署的时候附加 etc/a.properties 文件,则配置如下:


				<configuration>
					<artifacts>
						<artifact>
							<file>etc/a.properties</file>
							<type>properties</type>
							<classifier>org.liugang.settings</classifier>
						</artifact>
					</artifacts>
				</configuration>  

假设当前pom的groupId/artifactId/version为: org.liugang.maven.resources/BuilderHelperTester/0.0.1-SNAPSHOT

 

则运行完 mvn clean install 之后,到本地Maven库的目录:


${M2Repository}\org\liugang\maven\resources\BuilderHelperTester\0.0.1-SNAPSHOT  

下就可以看到除了生成对应的jar文件,还会生成一个文件:


BuilderHelperTester-0.0.1-SNAPSHOT-org.liugang.settings.properties  

这个文件的内容即 etc/a.properties 里的内容。

然后如果要引用这个properties文件,需要指定具体的type和classifier,例如:

 


			<groupId>org.liugang.maven.resources</groupId>
			<artifactId>BuilderHelperTester</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		 	<type>properties</type> 
		 	<classifier>org.liugang.settings</classifier>   

像在karaf里就可以通过这种方式读取一些bundle的额外设置:


<configfile finalname="/etc/org.liugang.settings.cfg">mvn:org.liugang.maven.resources/BuilderHelperTester/0.0.1-SNAPSHOT/properties/org.liugang.settings</configfile>   

其中路径的格式为:


mvn:${groupId}/${artifactId}/${version}/${type}/${classifier}  

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

build-helper-maven-plugin的使用 的相关文章

  • 45000 ms 内无法绑定锁定端口 70 54

    当我尝试使用 MVN 测试命令行运行我的 selenium 测试时 出现此错误 奇怪的是 我三天前尝试了一下 运行成功了 T E S T S Running GoogleNavigationTest Tests run 1 Failures
  • 如何从 JUnit 测试读取 Maven 属性?

    我正在使用 Maven 3 0 3 和 JUnit 4 8 1 在我的 JUnit 测试中 如何读取 Maven pom xml 文件中定义的 project artifactId 在我的 pom 中 我有
  • 使用“mvncompilejib:build”推送到 Docker 注册表失败

    我正在尝试使用以下命令构建并将我的 docker 映像部署到私有注册表谷歌联合投资银行Maven 插件 但是 它因访问私有注册表时出现问题而失败 我已经安装了Docker 桌面 v19 03 1 on my Windows 10机器 接下来
  • 颠覆和混合修订:破坏构建的秘诀?

    在使用 TFS 一段时间后 我刚刚回到 subversion 一般来说我已经很退出了 有一件事情我记得不一样 我不记得能够从过时的工作副本中提交 或者也许我的记忆力让我无法理解 过时 的定义 我认为 过时 意味着自从我上次更新工作副本以来
  • 由于 http 响应 405,无法执行 mvn tomcat:deploy

    我正在将 Tomcat 7 作为 Windows 服务运行 我想在我的项目根目录中进行 mvn tomcat 部署 但总是出现这个错误 你能帮我解决这个问题吗 INFO Deploying war to http localhost 808
  • Java Logger 未记录到 Netbeans 中的输出

    我正在 Netbeans 中使用 Maven 启动一个 Java 项目 我编写了一些代码来使用 Logger 类进行日志记录 但是 日志记录似乎不起作用 在程序开始时 我运行 Logger getLogger ProjectMainClas
  • Maven:从构建中排除测试

    我在项目的 src test java 文件夹中有一些类用作测试 当我使用标准 Maven 编译插件运行 Maven 时 这些项目被编译成 class 文件 并包含在打包编译代码的 jar 中 在运行 Maven 和构建我的版本之前 我已经
  • 如何抑制 Maven 程序集插件跳过已添加的文件?或者允许覆盖?

    几个星期以来 我一直在与 Maven 搏斗 让它 正确 地部署我们的项目 我快完成了 但我有一个顽固的小问题 当我使用带有 目录 目标的 Maven 程序集插件时 如下所示 mvn assembly directory 我得到很多控制台输出
  • primefaces 二维码未显示?

    I am using primefaces to develop a web app I am trying to show the bar code on mhe webpage All coders are shown except t
  • Maven 不会运行测试

    跑步时mvn testmaven 不会运行所有测试类 当我通过添加显式提供一个类时 Dtest PropertyTests将运行测试 这是我的 pom xml
  • 在 mvn 命令中指定 pom.xml 并混合其他项目的目标

    我有多个问题 我可以在 mvn 命令中指定 pom xml 吗 在当前项目上执行 mvn 命令时 我可以混合另一个项目的目标吗 例如 mvn clean otherproject comple otherproject install ot
  • maven Surefire 插件不使用 --enable-preview 模式

    这是我的 pom xml
  • 手动编辑 Jar 以更改包名称

    我有一个来自外部源的 jar 文件 jar 中的所有类都位于 com xyz 包中 我想将所有类移动到 com xyzold 包中 这是否像解压缩 jar 将 xzy 文件夹重命名为 xyzold 并重新压缩它一样简单 或者我还需要修改每个
  • Swagger for Micronaut 与 Maven

    我想从 Spring Boot 2 切换到 Micronaut 框架 而且我在 Swagger 设置上遇到了困难 在 Spring Boot 2 项目中 我有以下依赖项
  • ECMASCRIPT 5 与 wro4j 和 Google Closure 编译器

    我们将 wro4j 与 Google Closure 和 Maven 一起使用来缩小我们的 JS 默认情况下 它不支持 JS 中的严格模式 use strict 它只是将其删除 有什么配置我可以做吗pom xml或其他地方让它离开use s
  • 使用 Netbeans(和 Maven)运行正确的上下文根

    当我从 Netbeans 7 2 运行项目时遇到了一些问题 我还使用 Glassfish 3 1 2 服务器 事实上 我正在将现有项目从 Ant 迁移到 Maven 我的 pom xml 已完成 并且我已经使用了上下文根的自定义 如下所述
  • 构建 Vue 微前端应用程序(带有路由和 vuex 存储)

    我需要帮助配置使用 Vuex Vue Router 和 Vue i18n 的微前端应用程序的构建 分发 TL DR 我在构建将导入到现有系统中的微前端应用程序时遇到问题 我们的团队尝试通过 vue cli service 和 vue web
  • 将多模块 Maven 项目导入 Eclipse 时出现问题 (STS 2.5.2)

    我刚刚花了最后一个小时查看 Stackoverflow com 上的线程 尝试将 Maven 项目导入到 Spring ToolSuite 2 5 2 中 Maven 项目有多个模块 当我使用 STS 中的 Import 向导导入项目时 所
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • Maven 构建在 Jenkins 上失败,但可以在本地计算机上运行

    我有一个全新安装的 Debian Wheezy 服务器 运行 Jenkins 1 596 最新版本 安装自官方deb包 http pkg jenkins ci org debian 为了与詹金斯一起玩 我创建了一个新的Maven项目使用 G

随机推荐

  • swap与zRam能否提升游戏性能【转】

    http bbs angeeks com thread 2384563 1 1 html 先来谈谈swap xff0c swap是创建在sdcard上的一个缓存文件或者也可以创建在手机NAND上的 xff0c 其两者的速度不 说 xff0c
  • 如何在linux脚本里面套娃运行脚本

    直接在脚本里面写sudo bash xx sh 有时候可能会出现问题 xff0c 这个时候就可以使用gnome重新打开新终端运行 首先安装gnome的库 sudo apt get install gnome terminal 然后在脚本里面
  • 树莓派如何设置开机自启动脚本

    参考文章 xff1a 史鑫龙 xff1a 树莓派开机自动执行程序 通过桌面启动 by xinlong 通过该文章的操作可以实现开机启动python程序 xff0c 但并不能实现开机运行shell脚本 xff0c 结合我之前的文章发现配合gn
  • Markdown学习记录

    Markdown 1 代码块 xff1a 代码块语法 xff1a 96 96 96 python 96 96 96 shell 1 python代码 print 34 Hello World 34 2 shell脚本 linux下重启的命令
  • MAC终端代理设置

    移动开发有时需要设置代理 xff0c 不然太慢 在终端中输代码即可显示隐藏文件 defaults write com apple finder AppleShowAllFiles boolean true killall Finder 再次
  • C#:如何查看.net core版本?

    C xff1a 如何查看 net core版本 xff1f 打开控制面板 xff0c 选择 程序和功能 xff0c 找到下图选项 xff0c 即可查看 net core版本 检查是否已正确安装所有内容 xff1a 安装完成后 xff0c 打
  • Qt信号槽如何传递参数

    Qt信号槽如何传递参数 利用 Qt 进行程序开发时 xff0c 有时需要信号 槽来完成参数传递 带参数的信号 槽在使用时 xff0c 有几点需要注意的地方 xff0c 下面结合实例进行介绍 1 当信号与槽函数的参数数量相同时 xff0c 它
  • 解决 zsh: command not found 报错

    问题描述 最近在开发 Go 项目 xff0c 使用 go get u xxxx 成功下载安装包后 xff0c 在终端执行新下载包的命令 xff0c 一直报 zsh command not found 的错误 一开始以为是包没安装成功 xff
  • Ubuntu 安装scipy错误解决办法

    在ubuntu 14 04使用pip3 install scipy时报错 xff1a numpy distutils system info NotFoundError no lapack blas resources found 百度了一
  • LA5016-IIC EEPROM协议解析

    写入 LA5016 解析协议设置 xff1a 波形 读取 波形 xff1a
  • Linux下安装oracle数据库提示DISPLAY not set. Please set the DISPLAY and try again.解决方法

    问题描述 xff1a Linux下安装oracle数据库提示DISPLAY not set Please set the DISPLAY and try again 如下图所示 xff1a 解决办法 xff1a 切换到root 用户 xff
  • html 清除缓存样式

    autocomplete 61 off
  • ArcGIS Server for linux 服务无法启动解决简记

    今天在一台Linux虚拟机上安装了一个ArcGIS Server For Linux 只ArcSOC 组件 xff0c 一切正常 xff0c 但是启动服务的时候报一下的错误 xff1a root 64 rhsde scripts start
  • Java中swap()方法的实现

    为了能更多的掌握C C 43 43 xff0c 时不时的就会拿起一本什么书看看 昨天又看到了请指针和引用的部分 xff0c 又会有经典的swap 方法的实现 几乎所有人都知道了 xff0c 要实现一个正确的swap 方法需要以指针或引用为参
  • 渐变色原理

    引用 http www islandcn com post 311 html 在图象图形的编程中 经常会见到渐变色以及各种图片的叠加等效果 这篇文章就是要对这些效果的原理加以分析 并在Elastos 操作系统 Mobile Edition
  • JAX-WS 学习二:创建客户端

    上一节中介绍了怎么基于JAX WS的API创建服务端 xff0c 这一节介绍一下创建一个客户端调用WebService服务 要创建一个Client端也相当简单 xff0c 不过需要知道几个东西 xff1a 1 wsdl文件路径 需要读取服务
  • 使用JDI监听Java程序运行

    Java虚拟机提供了一套用于调试 xff08 JVMDI xff09 和监视 xff08 JVMPI xff09 的接口 xff0c Java5之后统一为JVMTI xff1a http docs oracle com javase 1 5
  • 使用CXF和camel-cxf调用webservice

    CXF是什么 Apache CXF 是一个开源的 全功能的WebService框架 xff0c 它提供了一套工具和API来帮助开发和构建WebService xff0c 像 JAX WS 和 JAX RS 它也支持许多WebService标
  • Java国际化:BreakIterator

    译自 xff1a http tutorials jenkov com java internationalization breakiterator html xff0c 不准确别怪我 java text BreakIterator 类用来
  • build-helper-maven-plugin的使用

    build helper maven plugin 插件主要的作用就是用来指定额外的源码路径和资源路径 它总共有15个goal xff1a build helper add source Add more source directorie