私は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で、packageing要素に必要なタイプを宣言し、カスタムパッケージが提供されるようにプラグインを指定したことを確認します。 <extensions> true </ extensions>を宣言すると、プラグインがパッケージングや型ハンドラーを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は、components.xmlで指定された「.foobar」拡張子の付いたリポジトリにファイルを配信します
リッチセラーの元の回答のフォローアップ:
彼が推奨するパッケージタイプjar
を使用する場合、プラグインを参照するプロジェクトで最も可能性が高くなります。
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] The plugin descriptor for the plugin Plugin [com.ocado.mvn.packaging:Jar-Gem] was not found. Please verify that the plugin JAR /home/ndb/.m2/repository/com/ocado/mvn/packaging/Jar-Gem/1.0.0/Jar-Gem-1.0.0.jar is intact.
これは、生成したJARにプラグイン記述子が存在しないためです。
以下を使用して、彼が言及するNo mojo definitions..
エラーを回避できます。
<packaging>maven-plugin</packaging>
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.1</version>
<configuration>
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
</plugin>
</plugins>
</build>
この設定は、プラグインドキュメントの例 here で見つかりました。
maven-plugin
パッケージタイプのライフサイクルでは、plugin:descriptor
ゴールがgenerate-resources
フェーズにバインドされています。これは Sonatypeの公式ドキュメント で指定されています。