除了src/main/java
文件夹之外,我们还有一个文件夹,其中包含一些生成的主要源代码所需的 Java 源代码。需要时手动调用代码生成。生成的源代码被签入源代码库。一切都将被构建并打包在一起。
生成的 Java源将与主要源一起编译的最佳位置是什么?应该是:
/src/generated/java
src/testInt/java
(对于集成测试遵循相同的命名逻辑)/generated-src/main/java
(与“src 目录包含构建项目的所有源材料”相冲突)/src/main/generated-java
(嗯...generated-java
不是类型)- ...?
第一个选项似乎最适合这种情况。你怎么认为?Maven 文档中是否有任何描述这种情况的内容(我忽略了)?你知道有类似结构的回购吗?
谢谢你。
回答
正如@Absurd-Mind 所建议的,我们正在考虑的方向是将源代码拆分为子模块(这在 gradle 中效果很好)。因此,生成的源和其他一些相关的源将进入它自己的子模块(它们将产生单独的工件),其余的将进入使用这个的其他子模块。谢谢你。
我认为位置取决于源的生成和处理方式。
源代码在构建过程中自动生成:然后我会使用
target/main/java/
,target/test/java/
依此类推。这段代码没有签入 CVS,因为你可以很容易地重建它。如果您清理项目,target
目录将被删除,源代码将被重建。源代码是由外部工具或类似工具手动生成的:我会使用
generated/src/main/java/
,generated/src/test/java/
等等generated/src/main/resources/
。应该签入此代码。好处是,一旦您看到顶级目录名称,generated
您就知道下面的所有文件/目录也会生成。您还拥有顶级目录下的标准 Maven 目录结构。另一点是清理很容易,只需删除generated
并重新创建它,而无需查看许多其他目录(例如在您的示例中:src/main/generated-java
和 src/test/generated-java)。编辑:另一个不错的解决方案是创建一个仅包含生成的源的 maven 项目,如
myproject-generated-1.0.3.jar
. 该项目将成为您实际应用程序中的依赖项。然后,您只需将生成的源代码放入 int 即可src/main/java
。