10

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

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

这是相当耗时的。如何设置 Eclipse 以使其在保存时运行注释处理器?

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

4

3 回答 3

3

我在 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您可以使用;一次性运行它 它应该具有完全相同的效果。

于 2017-08-30T20:12:18.140 回答
2

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

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

于 2017-08-31T18:42:37.823 回答
1

我认为你需要一个触发器来运行 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>

提示:每次更改源文件(GWT)时都会调用与Maven Project Builder 相关的内容,并作为警告:如果您已将测试包含在正常的 Maven 构建周期中,则安装通常包括测试

于 2017-08-30T14:05:37.463 回答