什么是工件,为什么 Maven 需要它?
maven-metadata.xml
的文件和一个名为<artifactId>-<version>.pom
的文件。这两个文件都有一些未记录的架构和语义。
工件是部署到 Maven 存储库的文件,通常是 JAR。
Maven 构建会生成一个或多个工件,例如已编译的 JAR 和“源”JAR。
每个工件都有一个组 ID(通常是反向域名,如 com.example.foo)、一个工件 ID(只是一个名称)和一个版本字符串。这三者共同唯一地标识了工件。
项目的依赖项被指定为工件。
在一般软件术语中,“artifact”是软件开发过程产生的东西,无论是软件相关文档还是可执行文件。
在 Maven 术语中,工件是 Maven 构建的结果输出,通常是 jar
或 war
或其他可执行文件。 maven 中的工件由 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
等部分组成的美化名称。
把它们放在一起:
您的 Maven 项目可能通过其
Maven 与存储库管理器交互以通过指示存储库管理器向其发送一些与内部工件相对应的存储库管理器工件来将这些工件解析为文件。
最后,在解决之后,Maven 会构建您的项目并生成一个 Maven 工件。您可以选择“把它变成”一个存储库管理器工件,反过来,使用您喜欢的任何工具,将其发送给存储库管理器,其中包含足够的协调信息,以便其他人在向存储库管理器请求它时可以找到它。
希望有帮助。
mvn install
,人们正试图弄清楚该条目中的内容。所以jar的全名就是-DartifactId=YOUR_ARTIFACT_ID
要输入什么,对吗?带有版本和 .jar 的完整 jar 文件名?似乎是你在说什么,但会帮助一些人真正明确。其他答案接近这个,但我认为你的最好。
Maven 组织其构建项目。
maven 中的 artifact
是 maven 项目生成的资源。每个 maven 项目都可以有一个 artifact
,例如 jar, war, ear
等。
项目的配置文件 "pom.xml"
描述了工件的构建方式、单元测试的运行方式等。通常使用 maven 构建软件项目由许多构建构成产品的工件(例如 jars)的 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、native-libraries 等。
每个 Maven 项目都有一个由 [groupId, artifactId, version]
组成的唯一标识符。当一个 Maven 项目需要另一个项目的资源时,使用上述标识符在它的 pom.xml
中配置一个依赖项。然后,当触发构建时,Maven 会自动解析依赖关系。然后从本地 repository
(用户家中的一个简单目录)或从 pom.xml
中指定的其他(远程)存储库加载所需项目的工件。
Q. maven 中的 Artifact 是什么? ANS: ARTIFACT 是一个 JAR(WAR 或 EAR),但它也可能是其他东西。每个神器都有,
组 ID(如 com.your.package),
工件 ID(只是一个名称),以及
一个版本字符串。这三者共同唯一地标识了工件。
问:为什么 Maven 需要它们? Ans: Maven 用于使它们可用于我们的应用程序。
-DartifactId=YOUR_ARTIFACT_ID
中输入的内容,只是一个建议 :)
工件是 JAR 或存储在存储库中的东西。 Maven 将它们取出并构建您的代码。
对于 Maven,构建过程被安排为一组工件。文物包括:
组成 Maven 本身的插件。您的代码所依赖的依赖项。您的构建产生的任何东西都可以反过来被其他东西消耗。
工件存在于存储库中。
通常我们谈论关于 Group Id、Artifact Id 和 Snapshot Version 的 Maven 术语
Group Id:项目所属组的标识 Artifact Id:项目标识 Snapshot version:项目使用的版本。
Artifact 只不过是一些生成的文件,例如 Jar、War、Ear....
简单地说Artifacts不过是包。
通常,当您创建 Java 项目时,您希望使用其他 Java 项目中的功能。例如,如果您的项目想要发送一封电子邮件,您不需要为此创建所有必要的代码。您可以带一个完成大部分工作的 java 库。 Maven 是一个构建工具,可以帮助您完成多项任务。其中一项任务是以自动方式将这些外部依赖项或工件带到您的项目中(仅在 XML 文件中进行一些配置)。当然 Maven 有更多的细节,但是,对于你的问题,这就足够了。当然,Maven 也可以将您的项目构建为可以在其他项目中使用或导入的工件(通常是 jar 文件)。
这个网站有几篇关于 Maven 的文章:
https://connected2know.com/programming/what-is-maven/
https://connected2know.com/programming/maven-configuration/
什么是Artifact:它是一个war 文件,包含以下三个内容。
组 ID:类似于 com.yourCompanyName
神器ID:只是一个名字
版本:版本字符串。
这三者共同唯一地标识了工件。
Maven 习惯于使它们可用于我们的应用程序。包通常是 GroupId + ArtifactId
不定期副业成功案例分享
com.example.myproject.MyClass
的类可能在 groupIdcom.example
和 artifactIdmyproject
中找到,但这只是一个约定。 Maven 本身并不强制执行此约定。一些存储库 such as Maven Central 为新项目强制执行它。