我有一个奇怪的要求,其中一个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中。
答案 0 :(得分:0)
让您的生活更简单:使用maven modules
root
|
+----> generator
|
+----> generated
将项目拆分为两个模块,一个生成器模块和一个包含生成代码的模块。这样,在每个模块中,您都可以拥抱标准的maven生命周期:
在发电机模块中,一切都完全正常。
"生成"模块引用了"生成器"模块作为范围为provided
的依赖项,并使用文件夹generate-sources
作为输出文件夹在阶段target/generated-sources/<your generator>
中执行exec插件。您可能还需要buildhelper-maven-plugin
到add the generated sources folder as source root。其他一切都像往常一样完全有效。