2010-11-08 67 views
13

我使用Apache Thrift生成target/generated-sources中的代码。maven无法在编译阶段的生成源中添加文件

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

在我的理解中,Maven 2自动添加生成的源代码,是吗?

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

+0

[为什么Maven跳过我的自定义生成源执行?](http://stackoverflow.com/questions/18721684/why-is-maven-skipping-over-my-custom-generate-sources - 执行) – ArtB 2014-01-30 18:11:27

+0

[为什么Maven跳过我的自定义生成源执行?](http://stackoverflow.com/q/18721684/1523648)是关于antrun插件的配置错误,这个问题不是。 – oberlies 2014-01-31 08:49:48

回答

16

在我的理解,maven 2自动添加生成的来源,是吗?

没有自动,插件生成源代码通常处理,通过添加其输出目录(类似target/generated-sources/<tool>按照惯例)作为源目录到POM,使得其将在编译阶段以后包括。

一些执行得不好的插件不适合你,你必须自己添加目录,例如使用Build Helper Maven Plugin

而且由于您没有提供任何POM代码片段,任何链接,我不能再多说什么了。

如果我的测试代码还取决于生成的来源,我必须手动指定编译器包括?

正如我所说的,生成的源代码通常被添加为源目录并编译,因此可以在测试类路径中使用,而无需执行任何操作。

+1

_plugins生成源代码通常通过将它们的输出目录作为源目录添加到POM_来处理该源代码 您是否有这种配置的任何示例?我试图创建一个不那么“实施不佳”的插件,它会生成代码,但我无法找到包含输出目录的最佳方式,而无需将其配置到“客户端”一侧。 – 2012-09-18 10:57:45

+0

@RémiM也许[这个答案](http://stackoverflow.com/a/19682602/254477)有帮助吗? – ArtB 2014-01-30 17:51:15

+1

@Pascal关于'/ target/generated-sources /'本身呢,是否需要添加到构建路径? – ArtB 2014-01-30 18:10:49

相关问题