gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 06:39:17 30 4
gpt4 key购买 nike

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

我在 Maven 3 中构建了一个自定义插件(一个定义了 git rebase 目标的插件)。我能够:

mvn install

没问题。然后我可以从命令行调用目标:
mvn edu.clemson.cs.rsrg:git-plugin:rebase

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

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

我的理解是纯粹的解决方案是为该组设置一个 maven 存储库并在那里加载我的插件,但这对于单个 hacky 插件来说似乎有点过分。

想法?

到目前为止,我已经通过三个不同的插件进行了尝试:
  • addjars-maven-plugin:add-jars
    <插件>
    com.googlecode.addjars-maven-plugin
    addjars-maven-plugin
    <版本>1.0.4
    <执行>
    <执行>
    <目标>
    add-jars

    <配置>
    <资源>
    <资源>
    <目录>${basedir}/plugins







  • mvn build 期间给我这个错误:
    [ERROR] Error resolving version for plugin 'edu.clemson.cs.rsrg:git-plugin' from the repositories [local (/home/hamptos/.m2/repository), central (http://repo.maven.apache.org/maven2)]: Plugin not found in any plugin repository
    它还导致我后来的格式化插件失败。 (显然它读取了 jar 并确定了组名/插件名,但随后它会在我的本地存储库中查找它?当然它不在那里——我正在尝试安装它。)
  • build-helper:attach-artifacts
    <插件>
    org.codehaus.mojo
    build-helper-maven-plugin
    <版本>1.7
    <执行>
    <执行>
    附加 Artifact
    <阶段>安装
    <目标>
    附加 Artifact

    <配置>
    <神器>
    <神器>
    ${basedir}/plugins/git-plugin-0.1.0a.jar
    jar







  • mvn build 期间给我这个错误:
    [ERROR] Failed to execute goal org.codehaus.mojo:build-helper-maven-plugin:1.7:attach-artifact (attach-artifacts) on project RESOLVE: Execution attach-artifacts of goal org.codehaus.mojo:build-helper-maven-plugin:1.7:attach-artifact failed: For artifact {edu.clemson.cs.rsrg:RESOLVE:12.09.01a:jar}: An attached artifact must have a different ID than its corresponding main artifact.
    (解决:12.09.01a 是主项目。显然这里出了点问题,因为插件和主项目肯定有不同的 artifactID。试图将项目附加到自身之上?)
  • maven-install-plugin:install-file
    <插件>
    org.apache.maven.plugins
    maven-install-plugin
    <版本>2.3.1
    <执行>
    <执行>
    安装-git-plugin
    初始化
    <目标>
    <目标>安装文件

    <配置>
    ${basedir}/plugins/git-plugin-0.1.0a.jar
    jar
    edu.clemson.cs.rsrg
    git-plugin
    <版本>0.1.0a





  • 似乎工作正常,直到我尝试调用像 mvn edu.clemson.cs.rsrg:git-plugin:rebase 这样的目标之一,此时它给了我这个错误:
    [ERROR] Failed to execute goal edu.clemson.cs.rsrg:git-plugin:0.1.0a:rebase (default-cli) on project RESOLVE: Execution default-cli of goal edu.clemson.cs.rsrg:git-plugin:0.1.0a:rebase failed: Unable to load the mojo 'rebase' (or one of its required components) from the plugin 'edu.clemson.cs.rsrg:git-plugin:0.1.0a': com.google.inject.ProvisionException: Guice provision errors:
    [ERROR]
    [ERROR] 1) Error in ComponentFactory:ant-mojo
    [ERROR] at ClassRealm[plugin>edu.clemson.cs.rsrg:git-plugin:0.1.0a, parent: sun.misc.Launcher$AppClassLoader@e776f7]
    [ERROR] while locating org.apache.maven.plugin.Mojo annotated with @com.google.inject.name.Named(value=edu.clemson.cs.rsrg:git-plugin:0.1.0a:rebase)

    最佳答案

    你可能认为它是hacky,但它是maven方式。它需要部署到 Maven 仓库。

    如果你把它保存在一个你可以证明拥有的 groupId 并且它是开源的,你可以 publish it to central

    关于Maven 3 - 在 .jar 中分发自定义插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12375952/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com