Java 我应该把源代码放在与源代码相同的文件夹中吗?

Java 我应该把源代码放在与源代码相同的文件夹中吗?,java,package-structuring,Java,Package Structuring,java应用程序的默认结构是: /src/test/java/com/mypackage/mymodule /src/main/java/com/mypackage/mymodule 我想举一个基本的例子。假设有一个名为“image”的模块,负责创建数据库方案,有一个存储库来保存图像,并提供使用该模块的服务 我想在不同的项目中使用这个模块,所以我只创建了一个git子模块,并将其添加到两个项目中。为了完成这一点,我还想移动此模块中的测试,以便每次构建一个项目时,都会执行测试。我不想管理其中一个项

java应用程序的默认结构是:

/src/test/java/com/mypackage/mymodule
/src/main/java/com/mypackage/mymodule
我想举一个基本的例子。假设有一个名为“image”的模块,负责创建数据库方案,有一个存储库来保存图像,并提供使用该模块的服务

我想在不同的项目中使用这个模块,所以我只创建了一个git子模块,并将其添加到两个项目中。为了完成这一点,我还想移动此模块中的测试,以便每次构建一个项目时,都会执行测试。我不想管理其中一个项目中的测试


是否有任何建议的方法来处理此类问题?

通常模块的测试存储在该模块中,但存储在tests文件夹中。因此,如果您更改了模块的某些内部构件,则只需要为该模块运行测试


假设您有模块A,项目P1和P2使用该模块A作为依赖项。然后模块A的单元测试应该在模块A的存储库中。在这种情况下,一旦模块A的构建成功完成,您就知道该模块工作正常


如果您在项目P1中对模块A的代码进行了单元测试,那么在不运行项目P1的构建的情况下,您无法测试模块A的构建。您可能还需要在另一个项目P2中对模块A中的代码运行重复测试,因为如果有人从项目P1中删除模块A,那么该代码的所有单元测试也将被删除,那么模块A将根本没有测试。

那么模块A的单元测试应该在模块A的存储库中。好的,但是我应该把它们存放在哪里呢?是否有推荐的方法将它们存储在repo中?src/main/java用于生产代码,src/test/java用于单元和其他类型的testsokay,但如果在Project1中添加子模块,包结构将是/src/main/com/package/src/test/java/mymodule,或者我理解错了吗?在这种情况下,您需要单独构建模块,并在主项目中添加Maven或Gradle Dependency有什么好处?为什么不将测试放在与源代码相同的目录中,以防污染输出war/jar文件?我看不出有什么缺点