什么是构件,为什么Maven需要它?
com.example.myproject.MyClass
的类可能在groupId com.example
和artifactId myproject
中找到,但这只是一种约定。Maven本身不强制执行此约定。一些存储库,例如Maven Central,会对新项目强制执行此约定。 - Stuart Sierra在软件领域一般而言,“artifact”是指软件开发过程中产生的任何东西,包括与软件相关的文档或可执行文件。
在Maven术语中,artifact是maven构建的结果输出,通常为一个jar
、war
或其他可执行文件。在maven中,artifact由groupId、artifactId和version这个坐标系来标识。Maven使用groupId
、artifactId
和version
来识别构建和运行代码所需的依赖项(通常是其他jar文件)。
我知道这是一个古老的帖子,但我想添加一些细微差别。
有Maven构件、存储库管理器构件以及 Maven Artifact
。
Maven构件就像其他评论者/响应者所说的那样:它是通过构建Maven项目生成的东西。它可以是一个.jar
文件,或者是一个.war
文件,或者是一个.zip
文件,或者是一个.dll
文件,等等。
存储库管理器构件是由存储库管理器管理的一种东西。存储库管理器基本上是用于软件可执行文件和库的高性能命名服务。存储库管理器不关心其构件来自何方(也许它们来自Maven构建、本地文件、Ant构建或手工编译...)。
Maven Artifact
是一个Java类,表示被存储库管理器解引用为存储库管理器构件的“名称”类型。在这种意义下使用时,Artifact
只是由 groupId
、artifactId
、version
、scope
、classifier
等部分组成的显赫名称。
把它们结合起来:
<dependency>
元素依赖于多个Artifact
。Artifact
的存储库管理器构件来解析这些Artifact
文件。希望这有所帮助。
mvn install
时,人们正在尝试弄清楚要放入哪个条目。因此,完整的jar文件名是要输入到-DartifactId=YOUR_ARTIFACT_ID
中的内容,对吗?包括版本和.jar的完整jar文件名?似乎这就是您所说的,但更明确的说明会对一些人有所帮助。其他答案也接近这个问题,但我认为您的最好。 - JimLohseMaven将其构建组织为项目。
Maven中的artifact
是由Maven项目生成的资源。每个Maven项目可以恰好有一个artifact
,例如jar、war、ear
等。
项目的配置文件"pom.xml"
描述了如何构建该artifact,如何运行单元测试等。
通常,使用Maven构建的软件项目由许多构建artifact(例如jars)的Maven项目组成,这些artifact构成了产品。
例如:
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
中指定的其他(远程)存储库加载。
问题:什么是Maven中的Artifact?
答案:Artifact 是一个JAR(WAR或EAR),但它也可能是其他类型的文件。每个Artifact都有:
问题:为什么Maven需要它们?
答案:Maven 用于使它们在我们的应用程序中可用。
-DartifactId=YOUR_ARTIFACT_ID
中输入什么,这只是一个建议 :) - JimLohseMaven将构建过程安排为一组构件。这些构件包括:
这些构件存储在仓库中。
Artifact是指JAR文件或其他你存储在仓库中的文件。Maven会从仓库中获取这些文件并构建你的代码。
在编程中,artifact指的是项目可以使用或生产的一个元素。在Maven术语中,artifact是在Maven项目构建后生成的输出。它可以是例如jar、war或任何其他可执行文件。
此外,Maven artifacts包括五个关键元素,groupId、artifactId、version、packaging和classifier。这些是我们用来识别artifact的元素,被称为Maven coordinates。
请从这里阅读
maven-metadata.xml
和一个名为<artifactId>-<version>.pom
的文件。这两个文件都有一些未记录的模式和语义。 - jameshfisher