【发布时间】:2025-12-31 05:30:15
【问题描述】:
mvn archetype:generate 提供了太多的选项,我希望用 junit 测试用例创建一个简单的 java 实用程序。我想知道我应该在这里使用什么原型?
【问题讨论】:
-
我建议您阅读Maven Getting Started Guide。它很短,涵盖了很多领域。
标签: java maven maven-archetype
mvn archetype:generate 提供了太多的选项,我希望用 junit 测试用例创建一个简单的 java 实用程序。我想知道我应该在这里使用什么原型?
【问题讨论】:
标签: java maven maven-archetype
我使用两种原型。这取决于您将创建什么样的应用程序。
如果您想要一个 Web 应用程序,请使用 maven-archetype-webapp,或者如果您想要一个简单的应用程序,请使用 maven-archetype-quickstart。它们很有用,因为您可以毫无问题地扩展它们。
【讨论】:
我正在使用如下命令:
mvn archetype:generate -Dfilter=org.apache.maven.archetypes:
我将仅从org.apache.maven.archetypes groupId 获得简短列表。像我的前辈所说的那样,最好的开始是maven-archetype-quickstart和maven-archetype-webapp。
【讨论】:
当您执行mvn archetype:generate 时,默认选择会出现在大括号() 中,例如(1274),如果您向上滚动查看#1274 是什么,它通常是尝试或开始使用的默认 Java 原型,如果做简单的 Java 项目,那么选择是安全的。
【讨论】:
380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
org.apache.maven.archetypes:maven-archetype-quickstart:1.1
mvn archetype:generate -DgroupId=com.example -DartifactId=foobar -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
【讨论】:
我认为你应该使用maven-archetype-simple
编辑
根据mavendocumentation:
maven-archetype-quickstart 包含示例 Maven 项目的原型。maven-archetype-simple 包含简单 Maven 项目的原型。【讨论】:
maven-archetype-simple,但我看到了 maven-archetype-quickstart。它们是一样的吗?
pom.xml并从命令提示符运行命令行。
我将从一个非常简单的 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
【讨论】:
您可以使用 The Practical Developer 中的任何基本功能:
mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0
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 是干什么用的?
archetypeArtifactId一起用于定位maven仓库中的archetype。
maven-archetype-quickstart 包含示例 Maven 项目的原型。 maven-archetype-simple 包含简单 Maven 项目的原型。
如果出现错误 通过将 Maven 原型目录添加到 Eclipse 来修复它。步骤如下:
打开窗口 > 首选项> Maven > 原型
点击
Add Remote Catalog并添加以下内容:目录文件:http://repo1.maven.org/maven2/archetype-catalog.xml
描述:maven 目录
注意:在创建您的第一个 Maven 项目期间需要互联网连接。
【讨论】:
现在默认的原型编号是 1092 1092: 远程 -> org.apache.maven.archetypes:maven-archetype-quickstart (包含示例 Maven 项目的原型。)
【讨论】:
您可能需要考虑Java Archetype:它具有合理的默认值,可以按照最佳实践(包括 JUnit 测试)快速启动 Java 项目。我认为它是maven-archetype-quickstart 的现代继承者。
例如:mvn archetype:generate -DarchetypeGroupId=io.github.oliviercailloux -DarchetypeArtifactId=java-archetype -DgroupId=mygroupid -DartifactId=myartifactid -DinteractiveMode=false.
免责声明:我是作者。
有关替代方案的更多信息,这里是that project’s README 的一部分(它提供的链接比此处复制的要多)。
官方快速入门原型
简单 Java 项目的官方原型(Apache's Maven Getting Started Guide 和 Apache Maven Cookbook 提到)是 maven-archetype-quickstart,或者 org.apache.maven.archetypes:maven-archetype-quickstart。
恕我直言,它应该被视为已弃用,因为它有几个弱点。
我的原型还默认提供日志记录,我认为这很有用,比 sysout 更好地扩展并且不会造成伤害,还有 Guava,我认为这有助于丰富 Java。
Maven Central 中的其他快速入门原型
为了尽可能共同努力并避免重复浪费,我积极寻找与我的目标相同的其他原型:提供具有合理默认值的简单原型,以轻松启动现代 Java 项目。 (这主要是在 2020 年 6 月左右完成的。)
在互联网上进行一般搜索后,我找到了 The Practical Developer。在与我联系时,他写信给我(通过电子邮件)说他不定期研究他的原型,因此更愿意拒绝在这样的项目上进行合作。
由于网络上的搜索没有发现其他有用的结果,而且我没有找到适合我需要的专门搜索工具,所以我实现了一个简单的原型浏览器。它列出了 Maven Central 中可用的所有原型。手动审查的项目太多了,因此,我选择了那些 groupId 和 artifactId 至少存在三年并在去年更新的项目,希望找到长期维护的项目,我想这表明更有可能是一个高质量的项目。 (当然,这个过滤器可能遗漏了与所述目标完全匹配的优质原型;我无法知道。作为一个恰当的例子,这个原型没有通过那个过滤器,因为我随着时间的推移改变了它的 artifactId。)
然后,我根据 POM 中的原型描述手动过滤结果列表,并进一步查看(通常在官方网站上)其中一些有希望的原型。只有com.github.ngeor:archetype-quickstart-jdk8 被发现是合适的候选人。但它的作者写信给我说他“这些天并没有真正使用/维护原型”。
【讨论】: