6

ここで Maven newb を完成させてください。乱用された用語などはご容赦ください。

Maven 3 (git rebase の目標を定義するプラグイン) でカスタム プラグインを作成しました。私はできる:

mvn install

問題ない。次に、コマンド ラインからゴールを呼び出すことができます。

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

すべてが黄金です。私のディレクトリには、この素敵な git-plugin-XXX.jar ファイルがありますtarget

開発チームの他のメンバーがそのプロジェクトのソースをプルダウンしたときに、私のプラグインを無料で (または少なくともmvn build.

私の理解では、純粋な解決策は、グループの Maven リポジトリをセットアップし、そこにプラグインをロードすることですが、単一のハッキー プラグインではやり過ぎのようです。

考え?


私はこれまでに3つの異なるプラグインを介してそれを行ってきました:

  • addjars-maven-plugin:add-jars

    <プラグイン>
       <groupId>com.googlecode.addjars-maven-plugin</groupId>
       <artifactId>addjars-maven-plugin</artifactId>
       <バージョン>1.0.4</バージョン>
       <実行>
          <実行>
             <目標>
                <goal>add-jars</goal>
             </目標>
             <構成>
                <リソース>
                   <リソース>
                      <ディレクトリ>${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

    <プラグイン>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>build-helper-maven-plugin</artifactId>
       <バージョン>1.7</バージョン>
       <実行>
          <実行>
             <id>アーティファクトの添付</id>
             <フェーズ>インストール</フェーズ>
             <目標>
                <goal>アタッチアーティファクト</goal>
             </目標>
             <構成>
                <アーティファクト>
                   <アーティファクト>
                      <file>${basedir}/plugins/git-plugin-0.1.0a.jar</file>
                      <type>瓶</type>
                   </アーティファクト>
                </アーティファクト>
             </設定>
          </実行>
       </実行>
    </プラグイン>
    

中にこのエラーが表示され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

    <プラグイン>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-install-plugin</artifactId>
       <バージョン>2.3.1</バージョン>
       <実行>
          <実行>
             <id>install-git-plugin</id>
             <フェーズ>初期化</フェーズ>
             <目標>
                <goal>インストールファイル</goal>
             </目標>
             <構成>
                <file>${basedir}/plugins/git-plugin-0.1.0a.jar</file>
                <packaging>ジャー</packaging>
                <groupId>edu.clemson.cs.rsrg</groupId>
                <artifactId>git プラグイン</artifactId>
                <バージョン>0.1.0a</バージョン>
             </設定>
          </実行>
       </実行>
    </プラグイン>
    

のような目標の1つを呼び出そうとするまではうまくいくようです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)

4

1 に答える 1

0

ハッキーだと思うかもしれませんが、それはMavenの方法です。Maven リポジトリにデプロイする必要があります。

明示的に所有できる groupId に保持し、それがオープン ソースである場合は、中央に公開できます。

于 2012-09-11T18:43:57.470 に答える