我写了一个Mojo
,它创建了一个新的Java类并将其放在/target/generated-sources/annotations
中。另外,我已经配置build-helper-maven-plugin
将该文件夹声明为源文件夹。
问题是当我这样做时:mvn clean install
从CLI生成了源文件,但没有编译它。
请注意,如果我从Eclipse中运行Maven Install
(使用m2e连接器),则可以正常工作。
我想念什么?
答案 0 :(得分:0)
没有实际的插件定义,我们只能推测。
我无法评论m2e,我看到您自己陈述的一个明显区别: mvn全新安装与 mvn安装,但来自“裸机”专家立场,
这是一个可能的原因:
Maven具有构成生命周期的阶段的概念。 here
提供了有关默认生命周期阶段的信息。插件(更确切地说是插件的“目标”)通常会附加到特定阶段。
例如,Maven编译器插件已附加到编译阶段。
因此,也许您开发的插件比编译器插件要运行稍后。 通常,源代码生成插件会附加到 generate-resources 阶段。
有可能在maven中运行完整的生命周期,实际上,这是人们通常所做的事情,例如,运行 mvn测试实际上意味着在默认生命周期的所有阶段运行直至(包括)阶段测试。
但是也可以直接运行特定的插件目标,而无需将其附加到阶段。当然,在这种情况下,应满足其先决条件。
例如, mvn surefire:test 意味着我们应该直接调用surefire插件。当然,源代码和测试代码应该事先编译(字节码必须存在于 target 目录中)
因此,我建议您运行以下一系列命令(如果有测试,请进行调整):
这将有效地帮助确保插件正确完成工作