maven无法在生成源中添加文件以进行编译阶段

时间:2010-11-08 03:24:06

标签: maven code-generation thrift

我使用Apache Thrifttarget/generated-sources中生成代码。

Thrift编译器生成一个名为gen-java的目录,其中包含所有Java代码。当我执行mvn compile时,代码在target/generated-source/gen-java中正确生成,但在编译阶段,它抱怨找不到gen-java中定义的类。

据我了解,Maven 2自动添加生成的源,是吗?

如果我的测试代码还取决于generated-sources,我是否必须手动指定编译器包括?

2 个答案:

答案 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