当前位置: 首页 > 知识库问答 >
问题:

Maven 3-在.jar中分发自定义插件?

唐信瑞
2023-03-14

在这里完成Maven newb,因此请原谅任何滥用的术语等。

我在Maven3中构建了一个自定义插件(一个定义git重基目标的插件)。我可以:

mvn install

没问题.然后我可以从命令行调用目标:

mvn edu.clemson.cs.rsrg:git-plugin:rebase

一切都是金色的。我的target目录中有这个可爱的git-plugin-xxx.jar文件。

我想让我的自定义目标可用于另一个项目,这样当开发团队的其他成员删除该项目的源代码时,他们就可以免费获得我的插件(或者至少在mvn build)。

我的理解是,纯粹的解决方案是为组建立一个maven repo并在那里加载我的插件,但对于一个简单的插件来说,这似乎有些过头了。

想法?

到目前为止,我已经通过三个不同的插件玩过了:

>

  • addjars-maven-plugin:add-jars

    <plugin>
       <groupId>com.googlecode.addjars-maven-plugin</groupId>
       <artifactId>addjars-maven-plugin</artifactId>
       <version>1.0.4</version>
       <executions>
          <execution>
             <goals>
                <goal>add-jars</goal>
             </goals>
             <configuration>
                <resources>
                   <resource>
                      <directory>${basedir}/plugins</directory>
                   </resource>
                </resources>
             </configuration>
          </execution>
       </executions>
    </plugin>
    

    MVN Build期间给出以下错误:

    [ERROR]存储库中插件“edu.clemson.cs.rsrg:git-plugin”的错误解析版本[local(/home/hamptos/.m2/repository),中央(http://repo.maven.apache.org/maven2)]:任何插件存储库中都找不到插件

    它还导致我后来的格式化插件失败。(很明显,它读取了jar并确定了组名/插件名,但随后它又在我的本地repo中查找它?当然,它不在那里--我正在尝试安装它。)

    >

  • build-helper:attach-artifacts

    <plugin>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>build-helper-maven-plugin</artifactId>
       <version>1.7</version>
       <executions>
          <execution>
             <id>attach-artifacts</id>
             <phase>install</phase>
             <goals>
                <goal>attach-artifact</goal>
             </goals>
             <configuration>
                <artifacts>
                   <artifact>
                      <file>${basedir}/plugins/git-plugin-0.1.0a.jar</file>
                      <type>jar</type>
                   </artifact>
                </artifacts>
             </configuration>
          </execution>
       </executions>
    </plugin>
    

    MVN Build期间给出以下错误:

    [错误]无法执行目标org.codehaus.mojo:build-helper-maven-plugin:1.7:项目上的Attach-Artifact(attach-artifacts)解析:执行目标org.codehaus的attach-artifacts.mojo:build-helper-maven-plugin:1.7:Attach-Artifact失败:项目{edu.clemson.cs.rsrg:resolve:12.09.01a:jar}:附加的项目必须具有与其对应的主项目不同的ID。

    (解析:12.09.01A是主项目。很明显这里出了问题,因为插件和主项目肯定有不同的工件。可能是想把项目附加在自己的上面吗?)

    >

  • maven-install-plugin:install-file

    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-install-plugin</artifactId>
       <version>2.3.1</version>
       <executions>
          <execution>
             <id>install-git-plugin</id>
             <phase>initialize</phase>
             <goals>
                <goal>install-file</goal>
             </goals>
             <configuration>
                <file>${basedir}/plugins/git-plugin-0.1.0a.jar</file>
                <packaging>jar</packaging>
                <groupId>edu.clemson.cs.rsrg</groupId>
                <artifactId>git-plugin</artifactId>
                <version>0.1.0a</version>
             </configuration>
          </execution>
       </executions>
    </plugin>
    

    在我尝试调用mvn edu.clemson.cs.rsrg:git-plugin:rebase这样的目标之前,似乎工作得很好,这时它会给出以下错误:

    [ERROR]无法在项目上执行目标edu.clemson.cs.rsrg:git-plugin:0.1.0a:rebase(default-cli)解析:执行目标edu.clemson.cs.rsrg:git-plugin:0.1.0a:rebase失败:无法从插件edu.clemson.cs.rsrg:git-plugin:0.1.0a:com.google.inject.provision加载mojo“rebase”(或其所需组件之一)异常:Guice提供错误:[ERROR][ERROR]1)ComponentFactory中的错误:在


  • 共有1个答案

    云宝
    2023-03-14

    你可能会觉得这很奇怪,但这是maven的方式。它需要部署到maven repo。

    如果您将它保存在一个您可以明显拥有的groupId,并且它是开源的,那么您可以将它发布到central

     类似资料:
    • 我为gradle创建了一个简单的基于groovy的插件。 在我的毕业典礼上。构建文件我有以下内容: 一切都很好,我得到了一个构建目录和一个. jar在lib文件夹中生成,我想这是独立的插件。 现在我想知道如何将这个新插件注册到我的gradle安装中,这样我就可以应用插件了:“myPlugin”我做了以下工作: 将插件放入安装中的插件文件夹 创建了myplugin.properties文件并将其包含

    • 试图了解如何创建自定义插件。但我无法完成我的新任务。我得到这个错误: 无法应用插件[id为“Code4Reference”] 更新:现在我面临另一个问题,当执行我的新任务,应该签署所有的RPM在路径上找到。我知道这在大楼里很好用。格拉德尔: 在libs.gradle.sign类型的任务“:MyTask”上找不到参数[libs.gradle.sign$_showmessage_closure1@4b

    • 我有一个gradle构建脚本,它检索了一些常见的依赖项,并将它们组合起来创建了一个“胖罐子”。

    • 我面临一个自定义插件的问题,这将显示从一个特定类别(移动)分类相关的帖子。如果没有帖子匹配分类法,它应该显示来自该特定类别的其他帖子。首先,我获取了当前帖子(single.php)的所有分类和术语。然后我准备一个查询参数使用循环。该代码适用于以下情况, a) 我没有添加任何帖子标签(当前帖子),然后它会显示来自同一类别(手机)的其他帖子, b) 如果我添加了一个post标记,并且还有其他post与

    • 我正在尝试发送电子邮件时,一个订单被移动到一个自定义状态在Woocommerce。我已经成功地创建了一个插件,它创建了一个自定义状态,订单被分配给自定义状态。 我还成功地在WooCommerce中的Settings->Emails下添加了一个自定义电子邮件模板,并编写了代码,当订单移动到自定义状态时,该代码应该发送电子邮件。 但是,代码不会被触发,电子邮件也不会被发送。 下面是我的代码。 在我编写

    • 问题内容: 我正在使用以Python编写的mapper和reducer在Hadoop中(在Amazon EMR上)运行流作业。我想知道如果我在Java中实现相同的mapper和reducer(或使用Pig),将会获得的速度提升。 特别是,我正在寻找人们从流媒体迁移到自定义jar部署和/或Pig的经验,以及包含这些选项的基准比较的文档。我找到了这个问题,但是答案对我来说不够具体。我不是要在Java和