什么是神器?为什么Maven需要它?
答案 0 :(得分:274)
工件是一个文件,通常是JAR,可以部署到Maven存储库。
Maven构建会生成一个或多个工件,例如已编译的JAR和“sources”JAR。
每个工件都有一个组ID(通常是反向域名,如com.example.foo),工件ID(只是一个名称)和一个版本字符串。三者一起唯一地识别工件。
项目的依赖项被指定为工件。
答案 1 :(得分:102)
在一般软件术语中,“artifact”是由软件开发过程产生的,无论是软件相关文档还是可执行文件。
在Maven术语中,工件是maven构建的结果输出,通常是jar
或war
或其他可执行文件。 maven中的工件由groupId,artifactId和version的坐标系标识。 Maven使用groupId
,artifactId
和version
来识别构建和运行代码所需的依赖项(通常是其他jar文件)。
答案 2 :(得分:23)
Maven在项目中组织其构建。
maven中的artifact
是由maven项目生成的资源。每个maven项目只能有一个artifact
,如jar, war, ear
等
项目的配置文件"pom.xml"
描述了工件的构建方式,单元测试的运行方式等。
通常,使用maven构建的软件项目由许多构建产品的构件(例如罐子)的maven项目组成。
例如。
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
中指定的其他(远程)存储库。
答案 3 :(得分:23)
我知道这是一个古老的线索,但我想添加一些细微差别。
有Maven工件,存储库管理器工件,然后有Maven Artifact
。
Maven工件就像其他评论者/响应者所说的那样:通过构建Maven项目来实现这一点。这可能是.jar
文件,.war
文件,.zip
文件,.dll
或您拥有的文件。
存储库管理器工件是由存储库管理器管理的。存储库管理器基本上是软件可执行文件和库的高性能命名服务。存储库管理器不关心其工件的来源(可能来自Maven构建,本地文件,Ant构建或手工编译......)。
Maven Artifact
是一个Java类,它表示由存储库管理器取消引用到存储库管理器工件中的“名称”类型。在这个意义上使用时,Artifact
只是一个美化的名称,由groupId
,artifactId
,version
,scope
,{{1}等部分组成等等。
把它们放在一起:
classifier
个Artifact
元素。{/ li>
<dependency>
对应的存储库管理器工件,将这些Artifact
解析为文件。希望有所帮助。
答案 4 :(得分:16)
问。什么是maven中的神器?
ANS:ARTIFACT是一个JAR,(WAR或EAR),但它也可能是其他东西。每个工件都有,
问:为什么Maven需要它们?
Ans:Maven用于使它们可用于我们的应用程序。
答案 5 :(得分:9)
工件是JAR或存储在存储库中的东西。 Maven将它们排除并构建您的代码。
答案 6 :(得分:8)
对于maven,构建过程被安排为一组工件。文物包括:
工件存放在存储库中。
答案 7 :(得分:4)
通常我们会谈论关于群组ID,工件ID和快照版本的Maven术语
组ID:项目组的标识 工件ID:项目的标识 快照版本:项目使用的版本。
神器只不过是一些像Jar,War,Ear ......这样的结果文件。
简单地说神器只不过是包裹。
答案 8 :(得分:0)
通常,当您创建一个Java项目时,您想使用另一个Java项目中的功能。 例如,如果您的项目要发送一封电子邮件,则无需创建所有必要的代码即可。您可以带一个Java库来完成大部分工作。 Maven是一个构建工具,可以帮助您完成多项任务。这些任务之一是自动将这些外部依赖关系或工件带到您的项目中(仅在XML文件中进行一些配置)。 当然,Maven有更多细节,但是,对于您的问题,这就足够了。 而且,当然,Maven也可以将项目构建为可在其他项目中使用或导入的工件(通常是jar文件)。
此网站上有几篇有关Maven的文章: