为简单的Java项目选择哪种原型


88

mvn archetype:generate提供了太多选项,我正在寻找一个使用junit测试用例的简单Java实用程序。我想知道我应该在这里使用什么原型?


我建议您阅读《Maven入门指南》。它很短,涵盖了很多基础。
2011年

Answers:


16

当执行a时mvn archetype:generate,默认选择会出现在大括号内(),例如(1274),如果向上滚动以查看#1274是什么,那么如果执行简单的Java项目,则通常是尝试或开始使用的默认Java原型,因此安全选择。


该默认值现在为333,而不是3
TimP 2013年

4
现在380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
slf

1
它说,如不即,所以它意味着默认的选择是3
哦钦文

2
现在是644 org.apache.maven.archetypes:maven-archetype-quickstart:1.1
aliopi

现在是874 :)
miku

74

我使用两种原型。这取决于您将创建哪种类型的应用程序。

如果要使用Web应用程序,请使用maven-archetype-webapp,或者如果您想使用简单的应用程序,请使用maven-archetype-quickstart。它们很有用,因为您可以毫无问题地扩展它们。


1
请注意,默认情况下这在Eclipse插件中(至少今天是)。
2013年

在这里,我将创建maven-archetype-webapp并下载maven目录,但出现错误。
Mowgli

我该怎么办?
Mowgli

19

我正在使用如下命令:

mvn archetype:generate -Dfilter=org.apache.maven.archetypes:

我只会从groupId中获得achetypes的简短列表org.apache.maven.archetypes。在好的开始是maven-archetype-quickstartmaven-archetype-webapp像我的前辈说。



7

我认为你应该使用 maven-archetype-simple

编辑

根据Maven文档

  • maven-archetype-quickstart 包含示例Maven项目的原型。
  • maven-archetype-simple 包含一个简单的Maven项目的原型。

4
maven-archetype-simple在Eclipse选择中没有看到,但是看到了maven-archetype-quickstart。他们是一样的吗?
huahsin68 2014年

请看看我以后引用Maven文档的编辑。关于eclipse插件:我个人更喜欢pom.xml手动编辑并从命令提示符运行命令行。
AlexR 2014年

6

我将从一个非常简单的pom.xml文件开始,该文件只有您需要的文件。就像是

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-module</artifactId>
  <version>1</version>
</project>

来自http://maven.apache.org/guides/introduction/introduction-to-the-pom.html


12
尽管此建议可能有好处,但它不能回答问题。据我所知,原型的全部目的是使开发人员摆脱这种样板,并使其易于遵循最佳实践。
Michael Scheper 2014年

3

您可以使用The Practical Developer的任何基本工具:

Java 8 +常用测试库:

mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0

Java 9 +常用测试库

mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0 -Djava-version=9

它们包括JUnit 4,Mockito和AssertJ,以及一个默认清单文件,以防您希望jar文件可执行。更多信息:https : //thepracticaldeveloper.com/archetypes/

免责声明:我是该博客的作者。


我知道了groupId,但是这是archetypeGroupId为了什么呢?
lupchiazoem

1
它与一起用于在Maven存储库中定位原型archetypeArtifactId
莫伊塞斯

0

maven-archetype-quickstart包含示例Maven项目的原型。maven-archetype-simple一个原型,其中包含一个简单的Maven项目。

如果出现错误,可以通过将Maven原型目录添加到Eclipse中来修复它。下面提供了步骤:

打开窗口>首选项> Maven>原型

单击Add Remote Catalog并添加以下内容:

目录文件:http//repo1.maven.org/maven2/archetype-catalog.xml

说明:Maven目录

注意:在创建第一个项目之前,需要进行Internet连接。


下载上述目录并手动设置,但对我不起作用。
Mowgli


0

您可能需要考虑Java Archetype:它具有合理的默认值,可以按照最佳实践(包括JUnit测试)快速启动Java项目。我将其视为现代的继任者maven-archetype-quickstart

范例:mvn archetype:generate -DarchetypeGroupId=io.github.oliviercailloux -DarchetypeArtifactId=java-archetype -DgroupId=mygroupid -DartifactId=myartifactid -DinteractiveMode=false

免责声明:我是作者。

有关替代方案的更多信息,这是项目自述文件的一部分(提供的链接比此处复制的链接更多)。

官方快速入门原型

简单Java项目的正式原型(由Apache的《 Maven入门指南》和Apache Maven Cookbook提及)为maven-archetype-quickstart,或完整的org.apache.maven.archetypes:maven-archetype-quickstart。

恕我直言,应将其视为已弃用,因为它有几个缺点。

  • 一个重要的问题是,它创建了依赖于JUnit 4的项目。当前版本(JUnit 5)有很大的不同,其中包括改进的API。
  • 较小的弱点:它的默认版本是1.0-SNAPSHOT,应遵循推荐的常用方案,将其设置为1.0.0-SNAPSHOT。
  • 另一个小缺点:它创建为1.7 JVM配置的项目。如果您特别需要支持旧安装,这可能是适当的,但是对于新项目,选择合理的最新JVM是更合理的默认规则。例如,Java 8引入了lambda表达式,您可能不想错过它。

我的原型还默认提供日志记录,我认为它很有用,扩展性比sysout好,并且不会受到损害;还有Guava,我认为它有益地丰富了Java。

Maven Central中的其他快速入门原型

为了在可能的情况下共同努力并避免浪费的重复,我积极地寻找了与我的目标相同的其他原型:提供具有合理默认值的简单原型以轻松启动现代Java项目。(这大部分是在2020年6月左右完成的。)

在互联网上进行的常规搜索使我找到了The Practical Developer。当与他联系时,他(通过电子邮件)给我写信说,他没有定期进行原型设计,因此宁愿拒绝在该项目上进行合作。

由于网上搜索没有发现其他有用的结果,并且由于我没有找到适合自己需求的专门搜索工具,因此我实现了一个简单的原型浏览器。它列出了Maven Central中可用的所有原型。手动审核的内容太多了,因此,我选择了groupId和artifactId至少存在三年并在去年进行了更新的对象,以期找到长期维护的项目,我认为这表明更可能是一个高质量的项目。(当然,此过滤器可能错过了与既定目标完全匹配的高质量原型;我没有办法知道。作为一个例子,由于我随着时间的推移更改了其artifactId,因此该原型无法通过该过滤器。)

然后,我根据在其POM中找到的原型描述手动过滤了结果列表,并进一步查看了(通常在官方网站上)其中的一些有希望的原型。仅com.github.ngeor:archetype-quickstart-jdk8透露是合适的候选人。但是它的作者给我写信说,“这些天他并没有真正使用/维护原型”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.