maven-exec-plugin无法从src / main / java查找未编译的类

时间:2015-12-07 15:52:54

标签: java maven

我有一个奇怪的要求,其中一个jar基于src / main / java中的源生成源。最终的jar应该捆绑生成的文件而不是src / main / java中的文件。

这就是我所做的: 1.在src / main / java中添加了源代码 2.添加了maven-exec-plugin,从作为依赖项添加的jar中调用main-class并传递必需的参数。 3.添加了build-helper-maven-plugin,将生成的源路径添加到maven源。 4.添加maven-jar-plugin以包含和排除所需的类。

问题:当执行第2步时,主类抱怨它无法找到src / main / java中存在的类。是否需要在用于动态创建实例之前编译该类...如Class.forname(" package.Class")?

如果maven-exec-plugin在" compile"之后执行。阶段然后没有ClassNotFoundException,但问题是生成的源文件在捆绑之前没有被编译,我看到文件带有" .java"扩展被捆绑在生成的jar中。

1 个答案:

答案 0 :(得分:0)

让您的生活更简单:使用maven modules

root
 |
 +----> generator
 |
 +----> generated

将项目拆分为两个模块,一个生成器模块和一个包含生成代码的模块。这样,在每个模块中,您都可以拥抱标准的maven生命周期:

在发电机模块中,一切都完全正常。

&#34;生成&#34;模块引用了&#34;生成器&#34;模块作为范围为provided的依赖项,并使用文件夹generate-sources作为输出文件夹在阶段target/generated-sources/<your generator>中执行exec插件。您可能还需要buildhelper-maven-pluginadd the generated sources folder as source root。其他一切都像往常一样完全有效。