45

我是 Maven 新手,我在这里使用maven.apache.org 教程作为介绍。

在教程的“我如何制作我的第一个 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': :
...

我该如何定义它们?

4

4 回答 4

44

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

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

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

您还可以阅读maven-archetype-plugin的使用站点。

于 2011-11-20T22:53:37.330 回答
4

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

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

于 2011-11-19T13:37:05.587 回答
1

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

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

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

于 2011-11-25T15:33:35.927 回答
0

您也可以使用简写形式

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网站

于 2016-09-20T15:06:47.493 回答