如何使用 maven-archetype-plugin 创建项目?啥是 artefactId 等?

Posted

技术标签:

【中文标题】如何使用 maven-archetype-plugin 创建项目?啥是 artefactId 等?【英文标题】:How to create a project using maven-archetype-plugin? What is artefactId etc?如何使用 maven-archetype-plugin 创建项目?什么是 artefactId 等? 【发布时间】:2012-01-01 21:58:39 【问题描述】:

我是 Maven 新手,我使用 maven.apache.org tutorial here 作为介绍。

在本教程的“我如何制作我的第一个 Maven 项目?”部分,它教我们通过执行以下命令来生成一个 Maven 原型项目:

mvn archetype:generate

Maven下载了很多工件后,突然停了下来,在命令行问了如下问题

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 149:

Apache 教程没有描述这个提示。

我有两个问题:

1. 上面问的问题是什么?应该如何回答才能让mvn archetype:generate进程继续?

2. 按照惯例,人们是否使用mvn archetype:generate 创建 Maven 项目?

-------------更新---------

关于我的第一个问题,我在没有输入任何值的情况下按下“enter”并得到以下输出:

Choose version: 
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1
Choose a number: 6: 

那是什么?

我在上述情况下输入“1”,然后我得到以下内容:

Define value for property 'package':  : :
Define value for property 'groupId': : 
Define value for property 'artifactId': :
...

如何定义它们?

【问题讨论】:

【参考方案1】:

mvn archetype:generate 命令用于从现有模板创建项目。许多开发人员和项目组定义了几种原型。当您运行命令时,maven 会执行以下操作:

    下载 maven-archetype-plugin 的最新版本。 列出可用于从中创建项目的所有原型。如果您在调用命令时定义了原型,maven 会跳转到第 4 步。 默认情况下,maven 选择 ma​​ven-archetype-quickstart 原型,它基本上创建了一个带有源代码和测试类的 maven Hello World 项目。如果你想创建一个简单的项目,你可以直接回车继续。如果您想创建特定类型的应用程序,您应该找到符合您需要的原型并输入该原型的编号,然后按 Enter。例如。如果你想创建一个 webapp 项目,你可以输入 153(这是这个原型的当前数字,它可以随时间变化。) 由于原型是模板并且它们旨在反映当前的最佳实践,它们可以随着时间的推移而发展,因此它们有自己的版本。 Maven 会询问您要使用哪个版本的原型。默认情况下,maven 会为您选择最新版本。因此,如果您同意使用最新版本的原型,只需在此步骤按 Enter; 每个 maven 项目(和模块)都有其 groupId、artifactId 和版本。然后,Maven 将分三个步骤向您询问这些问题。 groupId:这在组织或项目中通常是唯一的。 artifactId:artifactId 通常是项目已知的名称。版本:这是命名难题的最后一块。(read more) 最后,maven 会询问您代码的包结构。最佳做法是创建反映 groupId 的文件夹结构,因此 Maven 将其设置为默认值,但您可以随意更改。

输入这些信息后,Maven 会显示您输入的所有信息,并要求您验证项目创建。如果您按 Y 然后回车,瞧,您的项目将使用您选择的工件和设置创建。

您也可以阅读maven-archetype-plugin的使用网站。

【讨论】:

【参考方案2】:

它询问您要使用哪种原型来播种您的项目。如果您在该提示下按“输入”,它将为您提供可用选项列表。您可以使用maven-archetype-quickstart 来创建一个简单的项目(它可能会在此之后提示您选择一个存储库,在这种情况下,只需输入与您输入后列出的第一个存储库对应的编号即可)。

回答您的另一个问题:是的,使用原型是设置新项目的常用方法。主要是因为各种项目/模块都有很多原型。一旦您知道自己想要哪种原型,使用它来引导项目是最简单的入门方式。

【讨论】:

@Chris ,请检查我帖子中的更新,我按回车,但得到了奇怪的输出。它们是什么? 这些是您的存储库中可用的原型版本。除非您有其他令人信服的理由,否则您应该只使用最新的(因此在本例中为 1.1 版) 您可以使用ineractiveMode=false 开关关闭所有提示。试试mvn archetype:generate -DgroupId=com.mycompany -DartifactId=someProject -DinteractiveMode=false。希望对您有所帮助。【参考方案3】:

快速浏览本教程会发现,您省略了 archetype:generate 命令的一些参数。这就是为什么它不知道选择哪个原型来生成您的教程项目,并向您呈现所有可用的原型 (149)。

第一个问题:按回车键后,您接受了原型插件的建议并选择 #149。此原型以不同的版本退出,通常,正如 Chris 所说,可以选择最新的 - 这里是 1.1。

第二个问题:由于原型是一种可以为您节省大量工作的模板:是的,这很常见。但不是唯一的方法 - 你总是可以从一个空项目开始。

【讨论】:

【参考方案4】:

你也可以使用简写形式

mvn archetype:generate -Dfilter=org.example.group:example-artifact

甚至只是一组:

mvn archetype:generate -Dfilter=org.example.group:

如果它存在于任何配置的目录中,您将获得以下工件(在第一种情况下):

<groupId>org.example.group</groupId>
<artifactId>example-artifact</artifactId>

或者,如果有不止一个候选人,您将获得多个建议。因此,您必须通过输入选择列表中显示的索引来选择它们。

更多信息请咨询 maven website!

【讨论】:

以上是关于如何使用 maven-archetype-plugin 创建项目?啥是 artefactId 等?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?

WSARecv 如何使用 lpOverlapped?如何手动发出事件信号?