Mavenアーティファクトとは何ですか?


342

アーティファクトとは何ですか?なぜMavenはそれを必要とするのですか?


3
ここではMavenの概念についての詳細:tshikatshikaaa.blogspot.nl/2012/05/...
ジェローム・Verstrynge

1
ところであなたは、の定義のための公式のApache Mavenの用語集を参照することができますアーティファクトを
informatik01

1
これらの答えはどれも完全ではありません。これは、Mavenリポジトリを参照するだけで確認できます。アーティファクトは、明らかにいくつかの制約を満たすディレクトリmaven-metadata.xmlです<artifactId>-<version>.pom。たとえば、アーティファクトにはと呼ばれるファイルとと呼ばれるファイルが含まれている必要があります。これらのファイルには両方とも、文書化されていないスキーマとセマンティクスがあります。
jameshfisher 2014年

回答:


303

アーティファクトは、Mavenリポジトリーにデプロイされるファイル(通常はJAR)です。

Mavenビルドは、コンパイルされたJARや「ソース」JARなどの1つ以上のアーティファクトを生成します。

各アーティファクトには、グループID(通常、com.example.fooのような逆ドメイン名)、アーティファクトID(名前だけ)、およびバージョン文字列があります。3つを合わせて、アーチファクトを一意に識別します。

プロジェクトの依存関係はアーティファクトとして指定されます。


5
アーティファクトは基本的にJARファイルですか?したがって、joda時間jarファイルはjodaアーティファクトと呼ばれ、hibernate jarはhibernateアーティファクトと呼ばれる可能性がありますか?
david blaine 2013

47
アーティファクトとは何かを考えてください。エジプト人は陶器のような素晴らしい工芸品を作りました。しかし、エジプトのボウルを手に持っている場合、それがアーティファクト(事実)であるという事実について話していなければ、それを「アーティファクト」と呼ぶことはありません。あなたはそれをボウルと呼ぶでしょう。彼らはボウルから食べた。彼らはアーティファクトを食べませんでした。
cbmeeks 2014

3
@cbmeeksが得ているのは、「アーティファクト」は「もの」の名前ではなく、ビルドプロセスでの役割であるということです。Mavenが生成し、それを識別するための特別なMaven 座標が与えられる場合、すべてが「アーティファクト」として分類されます。
Garret Wilson、

"com.example:mylibrary:1.0.0"(groupId:artifactId:version)と呼ばれるものがある場合、それはjar、pom、およびソースjarで構成され、次のいずれかがアーティファクトです。1.各ファイル(pom、jar、source jar)は個別のアーティファクトです。2.同じものを共有するファイルのセット(groupId:artifactId:version)は、1つのアーティファクトを構成します。3.他に何か?
Laurence Gonsalves

クラスの名前を指定してgroupidおよびartifactidを取得する方法については説明しません。反対投票
Philip Rego

114

一般的なソフトウェア用語では、「アーティファクト」は、ソフトウェア関連のドキュメントであっても実行可能ファイルであっても、ソフトウェア開発プロセスによって生成されるものです。

Mavenの用語では、アーティファクトは、Mavenビルドの結果の出力であり、通常はjarwarまたはその他の実行可能ファイルです。Mavenのアーティファクトは、groupId、artifactId、およびversionの座標系によって識別されます。Mavenは、、、およびを使用してgroupId、コードのビルドと実行に必要な依存関係(通常は他のjarファイル)を識別します。artifactIdversion


私の本には、「このオンラインアプリケーションのコアアーティファクトは、Userという名前のJavaクラスになります」とあります...これは、あなたが言及したアーティファクトと同じですか?
デビッドブレイン2013

@davidblaine-正確ではありませんが、その文はより一般的な意味の単語を使用しています。
Ken Liu

27

私はこれが古いスレッドであることを知っていますが、いくつかのニュアンスを追加したかったのです。

Mavenアーティファクト、リポジトリマネージャーアーティファクト、そしてMavenがありますArtifact

Mavenアーティファクトは、他のコメンター/レスポンダーが言うとおりです。これは、Mavenプロジェクトをビルドすることによって生み出されるものです。それは、.jarファイル、.warファイル、.zipファイル、または、.dllあなたが持っているものです。

リポジトリマネージャーアーティファクトは、リポジトリマネージャーによって管理されるものです。リポジトリマネージャーは、基本的にはソフトウェア実行可能ファイルとライブラリの高性能なネーミングサービスです。リポジトリマネージャーは、アーティファクトがどこから来たのかを気にしません(たぶん、それらはMavenビルド、ローカルファイル、Antビルド、または手作業のコンパイルから...)。

Maven Artifactは、リポジトリマネージャーによってリポジトリマネージャーアーティファクトに逆参照される一種の「名前」を表すJavaクラスです。この意味で使用する場合、Artifactこのような部品で構成されただけの見せかけの名前でgroupIdartifactIdversionscopeclassifierなどなど。

すべてをまとめるには:

  • あなたのMavenプロジェクトは、おそらくArtifactその<dependency>要素としていくつかのに依存しています。
  • Mavenは、リポジトリマネージャーと対話しArtifactて、内部Artifactのに対応するリポジトリマネージャーアーティファクトを送信するようにリポジトリマネージャーに指示することにより、これらのをファイルに解決します。
  • 最後に、解決後、Mavenはプロジェクトをビルドし、Mavenアーティファクトを生成します。他の人がリポジトリマネージャーにそれ要求したとき見つけられるのに十分な調整情報とともにリポジトリマネージャーに送信し、好きなツールを使用してリポジトリマネージャーアーティファクトを「これに変換」することを選択できます。

お役に立てば幸いです。


古いスレッドの新しい情報の+1に感謝!修正タイプミス回数が(笑)...誰もが「アーティファクト」は、実際の瓶であると言っている右の単語かもしれないPOOで、使用している場合、例えば、ことを指摘してあなたの答えを更新すると便利かもしれませんが、「repoository」mvn install、人々はありますそのエントリに何を入れるかを理解しようとしています。したがって、jarの完全な名前はに入力するもの-DartifactId=YOUR_ARTIFACT_IDです。それでよろしいですか?バージョンと.jarを含む完全なjarファイル名?あなたが言っていることのように思えますが、一部は本当に明示的になるのに役立ちます。他の答えはこれに近づきますが、私はあなたの答えを最もよく考えました。
JimLohse

23

Mavenは、ビルドインプロジェクトを編成します。

artifactMavenの中には、Mavenプロジェクトによって生成されたリソースです。各mavenプロジェクトには、のartifactような1つを含めることができますjar, war, ear
プロジェクトの構成ファイルに"pom.xml"は、アーティファクトのビルド方法、ユニットテストの実行方法などが記述されています。 )製品を構成する。
例えば

Root-Project   // produces no artifact, simply triggers the build of the other projects
  App-Project  // The application, that uses the libraries
  Lib1-Project // A project that creates a library (jar)
  Lib2-Project // Another library
  Doc-Project  // A project that generates the user documentation from some resources

MavenアーティファクトはJavaリソースに限定されません。必要なリソースを生成できます。たとえば、ドキュメント、プロジェクトサイト、zipアーカイブ、ネイティブライブラリなど。

各Mavenプロジェクトには、からなる一意の識別子があり[groupId, artifactId, version]ます。Mavenプロジェクトが別のプロジェクトのリソースを必要とする場合、依存関係はpom.xml上記の識別子を使用して構成されます。その後、ビルドがトリガーされると、Mavenが自動的に依存関係を解決します。次に、必要なプロジェクトのアーティファクトが、repositoryユーザーのホームにある単純なディレクトリであるローカルから、またはで指定された他の(リモート)リポジトリから読み込まれますpom.xml


19

Q. Mavenのアーティファクトとは何ですか?
ANS:ARTIFACTはJAR(WARまたはEAR)ですが、それ以外の場合もあります。各アーティファクトには、

  • グループID(com.your.packageなど)、
  • アーティファクトID(名前のみ)、および
  • バージョン文字列。
    3つを合わせて、アーチファクトを一意に識別します。

Q.なぜMavenはそれらを必要とするのですか?
回答:Mavenを使用して、アプリケーションで使用できるようにします。


私が他の答えにコメントしたように、良い答えは、-DartifactId=YOUR_ARTIFACT_IDmvn installを実行するときに入力することになっているものを明確にしてください、単なる提案です:)
JimLohse

@JimLohseありがとう、「編集」タイトルを追加してください:)
VdeX

9

アーティファクトは、リポジトリに格納するJARまたは何かです。Mavenがそれらを取り出し、コードをビルドします。


8

Mavenにとって、ビルドプロセスは一連のアーティファクトとして配置されます。アーティファクトには次のものがあります。

  1. Maven自体を構成するプラグイン。
  2. コードが依存する依存関係。
  3. ビルドが生成するものはすべて、他の何かによって消費される可能性があります。

アーティファクトはリポジトリにあります。


4

通常、グループID、アーティファクトID、スナップショットバージョンについてMavenの用語を話します。

グループID:プロジェクトのグループのIDアーティファクトID:プロジェクトのIDスナップショットバージョン:プロジェクトで使用されるバージョン。

アーティファクトは、Jar、War、Earなどの結果ファイルにすぎません。

単にアーティファクトはパッケージにすぎないと言います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.