如何使用 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 选择 maven-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 提交?