【问题标题】:How to run annotation processor in eclipse on save如何在保存时在 Eclipse 中运行注释处理器
【发布时间】:2013-01-29 22:57:20
【问题描述】:

目前我在eclipse中为一个项目生成带有注释处理器的文件

Right click on project > Run As > Maven Clean
Right click on project > Run As > Maven install

这非常耗时。如何设置 eclipse 以使其在保存时运行注释处理器?

我有“自动构建”功能集,但它似乎忽略了注释处理器。顺便说一句,我正在使用带有“自动配置 JDT APT 激活”的 m2e apt 插件。

【问题讨论】:

  • 检查Java Compiler > Annotation Processing下的项目设置,并确保那里的一切都已启用。
  • 嗨!你的问题解决了吗?
  • 是的,我切换到 netbeans ????
  • 哈哈哈,无论如何,谢谢!如果我找到什么我会告诉你的!
  • @AndiDev 你在哪里使用什么库/框架?

标签: eclipse maven save code-generation annotation-processing


【解决方案1】:

我的一些项目在 Eclipse 中进行注释处理;对我来说,它正在保存,我不必mvn install(它的工作方式与 Maven 不同,因为 Eclipse 运行自己的编译器)。

我也在为此使用m2e-apt 插件。 如上所述,Eclipse 运行自己的编译器;这意味着它的输出可能与 Maven 略有不同(当您“右键单击项目 > 运行方式 > Maven 清理/安装”时,您调用的是 Maven,而不是 Eclipse)。我之所以提到这一点,是因为您的处理器完全有可能在 Maven 中出现问题并且在 Eclipse 中无法工作(尽管大多数情况下它们确实产生相同的输出;我已经看到了一些差异,但非常小)。如果我是你,我会密切关注 Eclipse 的错误日志(因为这是注释处理错误被写入的地方)。

所以这是我的建议:

  • 在 Eclipse 中发布一张带有 Maven/注释处理设置的图片(即使您似乎激活了正确的选项)。
  • 张贴带有Java/Compiler 设置的图片(那里有一个需要激活的复选标记;没有它就不起作用)。
  • 奇怪的是,发布您的pom.xml 会很有帮助。特别是如果您有 maven-compiler-plugin 的自定义配置。其中一些配置由m2e-apt 解释,例如编译器参数。
  • 查找名为.factorypath 的文件。这就是m2e-apt 保存它扫描以进行注释处理的 jar 列表的地方(您会在其中找到项目的所有 jar,即使它们实际上并不包含处理器;也就是说,除非您的 maven-compiler-plugin 已配置因此只考虑特定的处理器列表)。如果包含您的处理器的 jar 不在 .factorypath 中,它将无法工作。
  • 最后但并非最不重要的一点是,还有另一件事可能会导致问题。如果包含实际注释处理器的项目(因此不是“客户端”)与“客户端”项目位于同一工作区,那么m2e-apt 将简单地忽略您的注释处理器;我不知道为什么。在这种情况下,关闭您的注释处理器项目就足够了(您不必从工作区中删除它)。

编辑:忘了说如果您确实通过 Maven 运行注释处理(并且您调用 Maven 只是为了处理注释),那么 mvn compile 应该足够了。此外,您不需要单独运行它(首先是mvn clean,然后是mvn compile)。您可以使用mvn clean compile 一次性运行它;它应该具有完全相同的效果。

【讨论】:

    【解决方案2】:

    确保您的 Java 项目设置(可通过右键单击项目 > Java compiler > Annotation processors 访问)启用注释处理并且设置符合您的预期。

    对于 Maven 项目,m2e 应该根据 pom.xml 内容正确配置这些设置。但是,这对于所有 Maven 插件来说并不顺利(有些将支持“开箱即用”,有些则需要特定的插件......)。

    【讨论】:

    • 据我所知,处理注释处理的不是m2e。是m2e-apt
    【解决方案3】:

    我认为你需要一个触发器来运行 Maven 目标,所以:

    您必须添加有效的 Maven 生命周期操作

    maven install plugin在本地自动部署的jar示例

    <build>
        <!-- ... -->
    
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
    
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-jar-plugin</artifactId>
                                        <versionRange>[2.0,)</versionRange>
                                        <goals>
                                            <goal>jar</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <execute>
                                            <runOnConfiguration>true</runOnConfiguration>
                                            <runOnIncremental>true</runOnIncremental>
                                        </execute>
                                    </action>
                                </pluginExecution>
    
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-install-plugin</artifactId>
                                        <versionRange>[2.5.0,)</versionRange>
                                        <goals>
                                            <goal>install</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <execute>
                                            <runOnConfiguration>true</runOnConfiguration>
                                            <runOnIncremental>true</runOnIncremental>
                                        </execute>
                                    </action>
                                </pluginExecution>
    
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    

    提示:与Maven Project Builder is invoked every time I change a source file (GWT) 相关,并作为警告:如果您已将测试包含在正常的 Maven 构建周期中,安装通常会包含测试

    【讨论】:

      猜你喜欢
      • 2017-09-10
      • 2014-02-21
      • 1970-01-01
      • 2015-08-10
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      相关资源
      最近更新 更多