如何使用maven-archetype-plugin创建项目?artefactId是什么意思?

46
我是新手,正在使用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个回答

44

mvn archetype:generate 命令用于从现有模板创建项目。许多开发者和项目组定义了几个原型。运行该命令时,Maven 将执行以下操作:

  1. 下载最新版本的maven-archetype-plugin。
  2. 列出可以用来创建项目的所有原型。如果在调用命令时定义了原型,Maven将跳到第4步。
  3. 默认情况下,Maven选择maven-archetype-quickstart原型,它基本上创建了一个带有源代码和测试类的Maven Hello World项目。如果要创建简单项目,只需按Enter键继续即可。如果要创建特定类型的应用程序,则应找到与您需求匹配的原型,并输入该原型的编号,然后按Enter键。例如:如果要创建webapp项目,则可以输入153(这是此原型的当前编号,可能会随时间而变化)。
  4. 由于原型是模板,旨在反映当前的最佳实践,因此它们可能会随时间演变,因此它们具有自己的版本。 Maven会询问您要使用哪个原型版本。默认情况下,Maven为您选择最新版本。因此,如果您同意使用原型的最新版本,请在此步骤中按Enter键;
  5. 每个Maven项目(和模块)都有其groupId、artifactId和version。 Maven会在三个步骤中向您询问这些信息。 groupId:这通常在组织或项目中是唯一的。 artifactId:artifactId通常是项目所知的名称。 version:这是命名谜题的最后一块。(阅读更多
  6. 最后,Maven会询问您的代码包结构。最佳实践是创建反映groupId的文件夹结构,因此Maven将其设置为默认值,但您可以自由更改。
在输入了这些信息后,Maven将显示您输入的所有信息,并要求您验证项目创建。如果您按Y然后按Enter,那么您选择的构件和设置就完成了,项目也会被创建。
您还可以阅读maven-archetype-plugin的使用网站。

4
它正在询问您要使用哪种原型来初始化您的项目。如果您在该提示处按“Enter”,它将为您提供可用选项列表。您可以使用maven-archetype-quickstart来创建一个简单的项目(这可能会提示您在此之后选择存储库,在这种情况下,请输入与输入后列出的第一个存储库相对应的数字)。
回答您的另一个问题:是的,使用原型是设置新项目的常见方法。主要是因为有许多针对各种项目/模块的原型。一旦您知道要使用哪个原型,使用它来引导项目是最简单的入门方法。

@ Chris,请检查我的帖子更新,我按了回车键,但得到了奇怪的输出。它们是什么? - Mellon
这些是您存储库中可用的原型版本。除非您有充分的理由,否则应该使用最新版本(在本例中为1.1版本)。 - Chris
5
您可以使用interactiveMode=false来关闭所有提示。尝试运行mvn archetype:generate -DgroupId=com.mycompany -DartifactId=someProject -DinteractiveMode=false。希望能有所帮助。 - Sri Sankaran

1

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

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

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


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 网站 了解更多信息!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接