我有一个奇怪的需求,即源代码是由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以包含和排除所需的类。
问题:当执行step#2时,主类会抱怨它无法找到src/ main /java中的类。在动态创建instance...like Class.forname("package.Class")之前,是否需要编译该类?
如果maven-exec-plugin是在“编译”阶段之后执行的,那么就没有ClassNotFoundException了,但问题是生成的源文件在打包之前没有被编译,并且我看到带有".java“扩展名的文件被打包到生成的jar中。
发布于 2015-12-08 00:50:14
让你的生活更简单:使用maven modules
root
|
+----> generator
|
+----> generated将您的项目拆分为两个模块,一个生成器模块和一个包含生成代码的模块。这样,在每个模块中,您都可以采用标准的maven生命周期:
在生成器模块中,一切都是完全正常的。
"generated“模块引用"generator”模块作为作用域为provided的依赖项,并在generate-sources阶段执行exec插件,使用文件夹target/generated-sources/<your generator>作为输出文件夹。您可能还需要add the generated sources folder as source root的buildhelper-maven-plugin。其他一切都像往常一样工作。
https://stackoverflow.com/questions/34137735
复制相似问题