Eclipse Maven项目结构

我对maven来说相当陌生。 在Eclipse中,我创建了一个maven项目在这里我可以看到src / main / java和src / test / java还有一个src文件夹,它又包含main和test文件夹。 在这里我很困惑,在哪个src文件夹我需要写代码。 使用main和test文件夹的主要好处是什么? 为什么有两个主要的和两个src文件夹

文件

在任何应用程序中,您将有两种“种类”的代码:

  • 生产代码
  • 测试代码

生产代码是产生你的应用程序的东西 在Maven(也是Gradle)中,你定义了一个代码将被定位的“main”模块。 所以它位于src/main 。 里面你可能有几个文件夹:

  • 用于Java代码的src/main/java
  • src/main/kotlin为Kotlin代码

测试代码是确保您的生产代码正常工作。 作为生产代码,它需要放在通常称为“测试”的“模块”中。 所以你的测试代码将位于src/test 。 和生产代码一样,您可能有几个文件夹:

  • 对于用Java编写的src/test/java
  • src/test/kotlin在Kotlin编写的测试

测试您的生产代码以确保其确实可以正常工作是一个很好的做法。 现实情况是,找到一个不写任何测试的开发人员并不奇怪,因为这“非常耗时”。 但我强烈建议你学习如何编写质量测试

这都是在谈论“开发时间”。 在“部署时间”,成为应用程序的唯一代码是唯一位于main模块内部的代码

底部src文件夹我们在哪里单元测试应该是。 不要担心,如果你不知道这是什么意思。 在顶部文件夹是Java代码应该位于的地方。

我没有看到src / main / test我在你的截图中看到src / test。

这是将测试与实际代码分离的有效结构。

测试包将不会部署到生产现场。 它只能用于开发/质量保证/集成环境。

他们是一个一样的。 如果您使用Windows资源管理器或通过命令行查看目录,则会看到只有一个src / main / java和一个src / test / java 。 您在下面看到的文件夹就像您如何在资源管理器中查看文件夹和文件。 您看到的最上面的是文件夹的Java表示,它们是包名称。 测试代码进入测试状态时,您的生产代码将保存在主体中。 换句话说,被测试的课程位于主体中,而测试课程则位于测试中

我可以看到,你与src/mainsrc/test文件夹混淆。

你应该注意到顶部的src/main/javamaven显示文件夹的方式。 和src->main->java (一个文件夹在另一个文件夹中)是您的文件实际存储在workspace on the disk

所以如果你看看你的workspace你会发现像你这样的文件夹在底部。 一个在另一个。

现在你问为什么有两个副本:第一个顶部是我们写代码的地方。 在第二个src (它是磁盘上的实际文件夹)底部,它会自动反映您在顶层src创建的所有文件。 所以显然上面的src不是磁盘上的实际文件夹,而是maven如何显示源文件夹。

Main是你的业务逻辑所在的地方, Test是你在上面的逻辑放置testing code地方!