我使用Apache Thrift在target/generated-sources
中生成代码。
Thrift编译器生成一个名为gen-java
的目录,其中包含所有Java代码。当我执行mvn compile
时,代码在target/generated-source/gen-java
中正确生成,但在编译阶段,它抱怨找不到gen-java
中定义的类。
据我了解,Maven 2自动添加生成的源,是吗?
如果我的测试代码还取决于generated-sources
,我是否必须手动指定编译器包括?
答案 0 :(得分:18)
据我了解,maven 2会自动添加生成的源,是吗?
没有什么是自动的,生成源代码的插件通常通过将其输出目录(按照约定类似target/generated-sources/<tool>
)添加为POM的源目录来处理它,以便稍后将包含它编译阶段。
一些不太好实现的插件不会为您执行此操作,您必须自己添加目录,例如使用Build Helper Maven Plugin。
由于您没有提供任何POM代码段,任何链接,我都不能再说了。
如果我的测试代码也依赖于生成的源代码,我是否必须手动指定编译器包括?
正如我所说,生成的源通常作为源目录添加并编译,因此可以在测试类路径中使用,而无需执行任何操作。
答案 1 :(得分:0)
生成的源文件不会自动编译或打包。但是,某些IDE(例如IntelliJ)会将它们显示为源文件夹。
要使生成的源对Maven可见,请在build/plugins
的{{1}}节点上添加一个add-source
步骤:
pom.xml