什么是Maven工件?

什么是工件,Maven为什么需要它?

235622 次浏览

工件是一个JAR或存储在存储库中的东西。Maven将它们取出并构建您的代码。

对于maven,构建过程被安排为一组工件。产品包括:

  1. 组成Maven本身的插件。
  2. 代码所依赖的依赖项。
  3. 构建生成的任何东西都可能被其他东西消耗。

工件存在于存储库中。

在一般的软件术语中,“工件”是由软件开发过程产生的东西,无论是与软件相关的文档还是可执行文件。

在Maven术语中,工件是Maven构建的结果输出,通常是jarwar或其他可执行文件。maven中的工件由groupId、artifactId和version组成的坐标系统标识。Maven使用groupIdartifactIdversion来确定构建和运行代码所需的依赖项(通常是其他jar文件)。

工件是部署到Maven存储库的文件,通常是JAR。

Maven构建生成一个或多个工件,例如编译后的JAR和“源”JAR。

每个工件都有一个组ID(通常是反向域名,如com.example.foo)、一个工件ID(只是一个名称)和一个版本字符串。三者合在一起唯一地识别了这个神器。

项目的依赖项被指定为工件。

Maven在项目中组织其构建。

maven中的artifact是由maven项目生成的资源。每个maven项目只能有一个artifact,如jar, war, ear等 项目的配置文件"pom.xml"描述了如何构建工件,如何运行单元测试等等。 通常,用maven构建的软件项目由许多maven项目组成,这些maven项目构建了构件(例如jar),这些构件构成了产品 例如< / p >
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-archives、本地库等。

每个maven项目都有一个由[groupId, artifactId, version]组成的唯一标识符。当一个maven项目需要另一个项目的资源时,在它的pom.xml中使用上述标识符配置依赖项。然后,Maven在触发构建时自动解析依赖项。所需项目的构件然后从本地repository加载,这是用户家中的一个简单目录,或者从pom.xml中指定的其他(远程)存储库加载。

我知道这是一个古老的线索,但我想添加一些细微差别。

有Maven构件,存储库管理器构件,还有Maven __abc0。

Maven工件正如其他评论者/响应者所说:它是通过构建Maven项目而产生的东西。这可能是一个.jar文件,或一个.war文件,或一个.zip文件,或一个.dll,或诸如此类的文件。

存储库管理器工件是由存储库管理器管理的东西。存储库管理器基本上是用于软件可执行文件和库的高性能命名服务。存储库管理器并不关心其构件来自何处(可能来自Maven构建、本地文件、Ant构建或手工编译……)。

Maven Artifact是一个Java类,它表示由存储库管理器解引用到存储库管理器工件的那种“名称”。当在这种意义上使用时,Artifact只是一个美化的名称,由groupIdartifactIdversionscopeclassifier等部分组成。

把它们放在一起:

  • 你的Maven项目可能通过它的<dependency>元素依赖于几个__abc0。
  • Maven与存储库管理器交互,通过指示存储库管理器发送一些与内部__abc0对应的存储库管理器构件,将这些__abc0解析为文件。
  • 最后,在解析之后,Maven构建您的项目并生成Maven工件。你可以选择“把它变成”一个存储库管理器工件,反过来,使用任何你喜欢的工具,将它发送给存储库管理器,并提供足够的协调信息,当他们向存储库管理器请求它时,其他人可以找到它。

希望这能有所帮助。

通常我们谈论Maven术语关于组Id,工件Id和快照版本

Group Id:项目所属组的标识 工件Id:项目的标识

.快照版本:项目使用的版本

Artifact不过是Jar、War、Ear等结果文件....

简单地说工件只是包。

< p > 问:maven中的Artifact是什么? < br > 答:神器是一个罐子,(战争或耳朵),但它也可以是其他东西。每个工件都有,

  • 组ID(比如com.your.package);
  • 一个工件ID(只是一个名字),以及
  • 版本字符串。三者一起唯一地标识了工件。
< p > 问题:Maven为什么需要它们? < br > 答:Maven用于使它们对我们的应用程序可用
通常,当您创建一个Java项目时,您希望使用其他Java项目中的功能。 例如,如果你的项目想要发送一封电子邮件,你不需要为此创建所有必要的代码。您可以使用一个java库来完成大部分工作。 Maven是一个构建工具,可以帮助您完成多个任务。其中一项任务是以自动的方式将这些外部依赖项或工件引入项目(仅使用XML文件中的一些配置)。 当然,Maven有更多的细节,但对于你的问题,这就足够了。 当然,Maven也可以将您的项目构建为一个工件(通常是jar文件),可以在其他项目中使用或导入

这个网站上有几篇关于Maven的文章:

https://connected2know.com/programming/what-is-maven/

https://connected2know.com/programming/maven-configuration/

工件是项目可以使用或生成的元素。在Maven术语中,工件是Maven项目构建后生成的输出。例如,它可以是jar、war或任何其他可执行文件。

此外,Maven工件包括五个关键元素,groupId、artifactId、版本、打包和分类器。这些是我们用来识别工件的元素,被称为Maven坐标。

在这里读取它