如何为 Maven 创建新的打包类型?

2023-11-24

我需要使用 Maven 创建 jar 文件,但它们需要以“foobar”扩展名安装到存储库中,如果它们可以有自己的打包类型,这样我们就可以通过打包来识别这些工件,那就太好了。

我可以设置新的包装类型来执行此操作吗?


要按照您的描述进行操作,请创建一个带有打包的 Maven 项目jar(就像声明的那样here,因为不会有 mojo 定义)。在 src/main/resources/META-INF/plexus 子文件夹中创建一个包含以下内容的 Components.xml (假设您希望打包类型为“my-custom-type”,如果您希望将其更改为“foobar”希望)。

<component-set>
  <components>
    <component>
      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
      <role-hint>my-custom-type</role-hint>
      <implementation>
        org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
      </implementation>
      <configuration>
    <phases>
      <!--use the basic jar lifecycle bindings, add additional 
          executions in here if you want anything extra to be run-->          
      <process-resources>
        org.apache.maven.plugins:maven-resources-plugin:resources
      </process-resources>
      <package>
        org.apache.maven.plugins:maven-jar-plugin:jar
      </package>
      <install>
        org.apache.maven.plugins:maven-install-plugin:install
      </install>
      <deploy>
        org.apache.maven.plugins:maven-deploy-plugin:deploy
      </deploy>
    </phases>
      </configuration>
    </component>
    <component>
      <role>org.apache.maven.artifact.handler.ArtifactHandler</role>
      <role-hint>my-custom-type</role-hint>
      <implementation>
        org.apache.maven.artifact.handler.DefaultArtifactHandler
      </implementation>
      <configuration>
        <!--the extension used by Maven in the repository-->
        <extension>foobar</extension>
        <!--the type used when specifying dependencies etc.-->
        <type>my-custom-type</type>
        <!--the packaging used when declaring an implementation of 
          the packaging-->
        <packaging>my-custom-type</packaging>
      </configuration>
    </component>
  </components>
</component-set>

然后在要具有自定义包装的 pom 中,在包装元素中声明所需的类型,并确保您已指定插件,以便可以贡献自定义包装。声明 true 告诉 Maven 该插件向 Maven 提供打包和/或类型处理程序。

<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                             http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>name.seller.rich</groupId>
  <artifactId>test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>my-custom-type</packaging>
  <build>
    <plugins>
      <plugin>
        <groupId>name.seller.rich.maven.plugins</groupId>
        <artifactId>maven-foobar-plugin</artifactId>
        <version>0.0.1</version>
        <!--declare that this plugin contributes the component extensions-->
        <extensions>true</extensions>
      </plugin>
    </plugins>
  </build> 
</project>

当项目打包时,它将是一个带有 .jar 扩展名的 jar,但是当安装/部署时,Maven 会将文件传递到具有“.foobar”扩展名的存储库,如在 elements.xml 中指定的那样

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

如何为 Maven 创建新的打包类型? 的相关文章

  • 无法在 Android 10 中创建目录

    我无法在 android 10 中创建目录 它可以在 android Oreo 之前的设备上运行 我尝试了两种创建文件夹的方法 Using File mkdir File f new File Environment getExternal
  • HashMap不写入数据库

    我尝试在我的数据库中写入 但只写入发件人和消息 我不明白为什么会发生这种情况 我认为问题出在我使用 sendMessage 的地方 我认为问题是我没有什么可以做的读 写其他用户的主键 我在数据库中写入消息的活动 public class M
  • Java Try Catch Final 没有 Catch 的情况下会阻塞

    我正在审查一些新代码 该程序只有一个 try 和一个 finally 块 既然排除了 catch 块 那么如果 try 块遇到异常或任何可抛出的内容 它如何工作 它直接进入finally块吗 如果 try 块中的任何代码可以引发已检查异常
  • 禁用 Eclipse Java 调试器的热代码替换 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Eclipse 中禁用热代码替换 https stackoverflow com questions 2594408 how do i disable hot code replace in
  • 如何在spring mvc中从控制器名称+操作名称获取映射的URL?

    是否有现有的解决方案可以从 Spring MVC3 中的 控制器名称 操作名称 获取映射的 URL 例如 asp net mvc 或 Rails 中的 UrlHelper 我觉得非常有用 thx 也许 你想要这样的东西 in your Co
  • 如果在睡眠线程上调用interrupt()会发生什么?

    我有一个线程 然后run I call sleep 如果我中断这个线程会发生什么 MyThread extends Thread public void run try sleep 1000000 catch InterruptedExce
  • Java:使用 HttpURLConnection 的 HTTP PUT

    如何执行 HTTP PUT 我正在使用的类似乎认为它正在执行 PUT 但端点将其视为我执行了 GET 我做错了什么吗 URL url new URL https HttpURLConnection conn HttpURLConnectio
  • 如何在 JSP 中导入类?

    我是一个完全的JSP初学者 我正在尝试使用java util List在 JSP 页面中 我需要做什么才能使用除以下类之外的类java lang 使用以下导入语句进行导入java util List 顺便说一句 要导入多个类 请使用以下格式
  • Java套接字:在连接被拒绝异常时重试的最佳方法?

    现在我正在这样做 while true try SocketAddress sockaddr new InetSocketAddress ivDestIP ivDestPort downloadSock new Socket downloa
  • 主线程如何在该线程之前运行?

    我有以下代码 public class Derived implements Runnable private int num public synchronized void setA int num try Thread sleep 1
  • 具有共享依赖项的多模块项目的 Gradle 配置

    使用 gradle 制作第一个项目 所以我研究了 spring gradle hibernate 项目如何组织 gradle 文件 并开始制作自己的项目 但是 找不到错误 为什么我的配置不起作用 子项目无法解决依赖关系 所以项目树 Root
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • Java - 返回值是否会中断循环?

    我正在编写一些基本上遵循以下格式的代码 public static boolean isIncluded E element Node
  • 逃离的正确方法是什么?使用 Oracle 12c MATCH_RECOGNIZE 时 JDBCPreparedStatement 中的字符?

    以下查询在 Oracle 12c 中是正确的 SELECT FROM dual MATCH RECOGNIZE MEASURES a dummy AS dummy PATTERN a DEFINE a AS 1 1 但它不能通过 JDBC
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 解决错误javax.mail.AuthenticationFailedException

    我不熟悉java中发送邮件的这个功能 我在发送电子邮件重置密码时遇到错误 希望你能给我一个解决方案 下面是我的代码 public synchronized static boolean sendMailAdvance String emai
  • Java的-XX:+UseMembar参数是什么

    我在各种地方 论坛等 看到这个参数 并且常见的答案是它有助于高并发服务器 尽管如此 我还是找不到 sun 的官方文档来解释它的作用 另外 它是Java 6中添加的还是Java 5中存在的 顺便说一句 许多热点虚拟机参数的好地方是这一页 ht
  • JAXB - 列表<可序列化>?

    我使用 xjc 制作了一些课程 public class MyType XmlElementRefs XmlElementRef name MyInnerType type JAXBElement class required false
  • 在哪里存储 Java 的 .properties 文件?

    The Java教程 http download oracle com javase tutorial essential environment properties htmlon using Properties 讨论如何使用 Prop

随机推荐

  • TableLayoutPanel 的行/列着色(vs2008、winform)

    我可以为 TableLayoutPanel 中的整个行或列添加特定颜色吗 如何 请提供示例代码 如果有 提前致谢 是的你可以 使用 TableLayoutPanel 的 CellPaint 事件来测试哪一行 列调用了该事件 然后使用矩形的
  • 使用 tf.trainable_variables() 显示可训练变量的名称

    我正在处理weights in a RNNCell 我有以下代码 var names for var in tf trainable variables var names append var name 在另一个名为model py 我正
  • 正则表达式验证密码强度

    我的密码强度标准如下 8个字符长度 2 个大写字母 1 个特殊字符 2 个数字 0 9 3 个小写字母 有人可以给我同样的正则表达式吗 密码必须满足所有条件 您可以使用积极的前瞻断言来执行这些检查 A Z A Z 0 9 0 9 a z a
  • 我如何在discord.py中创建一个有效的斜杠命令

    我正在尝试使用 discord py 创建斜杠命令 我已经尝试了很多东西 但它似乎不起作用 如有帮助 将不胜感激 注意 我将在最后包含 pycord 的版本 因为我认为它更简单 也是最初的答案 不和谐 py版本 首先确保您安装了最新版本的d
  • Algolia 搜索网络错误

    我正在将 Algolia 与我拥有的 Firebase 项目连接起来 我使用 Firebase Cloud Functions 来使 Algolia 索引与 Firebase 数据库中发生的所有更改保持同步 但每当我打电话 索引 saveO
  • 为什么 CMP(比较)有时会在 8086 汇编中设置进位标志?

    我一直在阅读 8086 指令集 它说 CMP 比较 可以设置进位标志 我知道比较会减去两个操作数 但我想知道在这种情况下是否有人可以提供一个示例 我只是无法理解添加数字和负数将设置进位标志的想法 我已经阅读了借用标志 但我只需要一个示例来阐
  • Bootstrap:移动显示上的列之间的间隙

    我正在使用 bootstrap 3 0 制作一个网站 我希望 HTML 和 CSS 能够在桌面 平板电脑和移动设备上清晰地看到 我遇到的一个问题是 当您在移动显示器上查看该网站时 该列会堆叠在一起 我并不是在批评它 因为它会尽可能地停止滚动
  • 白名单不适用于人行横道离子

    我使用 ionic 创建了一个工作应用程序 从我的网站获取数据没有问题 一切都很好 然后我去添加人行横道 现在当我在 Android 手机上运行它时出现错误 W XWalkCordovaResourceClient URL blocked
  • 无法从传输连接读取数据:控制台应用程序中的连接已关闭错误

    我在控制台应用程序中有这段代码 它在循环中运行 try HttpWebRequest request HttpWebRequest WebRequest Create search request Headers Add Accept La
  • 使用 TextFieldParser 处理包含未转义双引号的字段

    我正在尝试使用导入 CSV 文件文本字段解析器 一个特定的 CSV 文件由于其非标准格式而给我带来了问题 相关 CSV 的字段用双引号括起来 当特定字段中有一组附加的未转义双引号时 就会出现此问题 这是一个过于简单的测试用例 突出了这个问题
  • 谷歌地图 api v3 - 从外部点击打开信息窗口

    所以我有一个 V3 地图 其初始化如下 function init var mapCenter new google maps LatLng 51 5081289 0 128005 var map new google maps Map d
  • React 导航抽屉的状态? (打开或关闭)

    我正在使用 React Navigation 构建一个抽屉 并且希望在用户关闭抽屉时执行一些逻辑 我在文档中没有看到任何明显的内容可以让我做到这一点 有人知道有办法做到这一点吗 您需要自定义导航操作来捕获DrawerClose event
  • Java 将 GMT/UTC 转换为本地时间无法按预期工作

    为了展示可重现的场景 我正在执行以下操作 获取当前系统时间 当地时间 将当地时间转换为 UTC 在此之前工作正常 反转 UTC 时间 回到当地时间 遵循 3 种不同的方法 如下所列 但所有 3 种方法均仅保留 UTC 时间 long ts
  • python子进程模块:循环子进程的标准输出

    我有一些使用子进程模块运行的命令 然后我想循环输出的行 文档说不要做 data stream stdout read 我不是 但我可能正在做一些调用它的事情 我像这样循环输出 for line in data stream stdout d
  • 如何从决策树中提取规则spark MLlib

    我正在使用 Spark MLlib 1 4 1 创建决策树模型 现在我想从决策树中提取规则 如何提取规则 您可以通过调用 model toDebugString 以字符串形式获取完整模型 或通过调用 model save sc filePa
  • IE 11 浏览器将自身识别为 Mozilla [重复]

    这个问题在这里已经有答案了 我正在开发 MVC 应用程序 net 4 5 框架 VS 2010 我有一段 Javascript 代码 可以识别应用程序正在运行的浏览器 如果浏览器是 Firefox 则将执行特定的代码块 否则将执行另一个代码
  • 与名为 com.apple.nsurlstorage-cache 的服务的连接已失效

    我正在为 iOS8 创建自定义键盘 但我很难解决 NSURLConnection 的一些问题 我正在使用 sendAsynchronousRequest 方法 如下所示 NSURLConnection sendAsynchronousReq
  • 在 PHP 中从数组键创建新变量

    假设我有一个数组 如下所示 foo array first gt 1st second gt 2nd third gt 3rd 如何从数组中挑选键并使它们成为自己的变量 例如 数组 foo会成为 first 1st second 2nd t
  • iPhone 中从右到左的 UI(希伯来语)

    我正在努力在 iPhone 应用程序中创建 RTL UI 该框架似乎不支持 RTL 语言 唯一的事情是标签内的对齐 这很好 但它与其他控件的行为冲突 问题是 RTL TableView 有工作代码吗 有什么东西可以将公开按钮置于左侧 章节标
  • 如何为 Maven 创建新的打包类型?

    我需要使用 Maven 创建 jar 文件 但它们需要以 foobar 扩展名安装到存储库中 如果它们可以有自己的打包类型 这样我们就可以通过打包来识别这些工件 那就太好了 我可以设置新的包装类型来执行此操作吗 要按照您的描述进行操作 请创