当前位置: 首页 > 面试题库 >

使用Maven为Eclipse编译器设置Java 6注释处理配置

刁远
2023-03-14
问题内容

为Java 6注释处理器设置Eclipse项目编译器配置的最佳方法是什么?

我的解决方案是手动设置org.eclipse.jdt.apt.core.prefsfactorypath文件。这有点麻烦:

  • 在factorypath文件中引用处理器jar
  • 配置蚀注解处理器输出目录(org.eclipse.jdt.apt.genSrcDir在属性org.eclipse.jdt.apt.core.prefs
  • 将Eclipse注释处理器输出目录添加为源文件夹

一个问题是,Eclipse生成的源将使用maven进行编译。Only maven clean compile是可靠的,因为它删除了Eclipse生成的源文件。(Eclipse和javac生成的源文件可能不同步。)

有没有更好的解决方案来配置Maven,而不会在Maven源路径上蚀掉生成的源文件?

<project>
  <properties>
    <eclipse.generated.src>${project.build.directory}/eclipse</eclipse.generated.src>
  </properties>
  <build>
      <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.4</version>
            <executions>
                <execution>
                  <id>add-source</id>
                  <phase>generate-sources</phase>
                  <goals> <goal>add-source</goal> </goals>
                  <configuration>
                      <sources>
                        <source>${eclipse.generated.src}</source>
                      </sources>
                    </configuration>
              </execution>
            </executions>
          </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-eclipse-plugin</artifactId>
        <configuration>
          <additionalConfig>
            <file> <name>.factorypath</name>
        <content><![CDATA[<factorypath>
  <factorypathentry kind="VARJAR" id="M2_REPO/processor/processor.jar" enabled="true" runInBatchMode="false"/>
  </factorypath>
  ]]>      </content>
            </file>
            <file>
              <name>.settings/org.eclipse.jdt.apt.core.prefs</name>
        <content><![CDATA[
  eclipse.preferences.version=1
  org.eclipse.jdt.apt.aptEnabled=true
  org.eclipse.jdt.apt.genSrcDir=${eclipse.generated.src}
  org.eclipse.jdt.apt.reconcileEnabled=true
   ]]>     </content>
            </file>
          </additionalConfig>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

问题答案:

更新:您可以尝试使用apt-maven-plugin。当前,它提供了三个目标:

  • apt-process对项目源执行apt。
  • apt:test-process对项目测试源执行apt。
  • apt:eclipse生成用于apt集成的Eclipse文件。

您可以按以下方式配置目标以使其作为构建的一部分运行:

<build>
  ...
  <plugins>
    ...
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>apt-maven-plugin</artifactId>
      <version>1.0-alpha-2</version>
      <executions>
        <execution>
          <goals>
            <goal>process</goal>
            <goal>test-process</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    ...
  </plugins>
  ...
</build>

默认情况下,输出目录设置为${project.build.directory}/generated-sources/apt

有一个针对编译器插件的开放Jira,用于添加对Java
6的APT支持,如果您希望在以后的版本中看到它,可以投票支持。



 类似资料:
  • 我正在使用EclipseIndigo,有一个Maven项目,它使用注释处理器生成代码。 我已经在项目属性中设置了注释处理(在Eclipse中),但理想情况下,我更希望这个IDE设置由Maven管理,这样我就可以轻松地与同事共享它。 如有任何建议,将不胜感激

  • 我已经通过使用Java 8的命令提示符编译成功地运行了用于类级保留注释的注释处理器。 但是,当我尝试在eclipse中配置注释处理器并尝试使用选项运行它时,它没有生效。 我已将包含自定义注释处理器类文件的Jar文件包含到

  • null 代码(步骤1和2): 实际上,第一个任务执行良好,并为注释处理器实现编译.class文件。它在第二个任务停止。 Ant说: Java 1.6 Ant 1.8.2

  • 该链接包含在错误404s中(https://developer.android.com/r/tools/annotation-processor-error-message.html),因此没有帮助。 我已经在android studio设置中启用了注释处理,并将添加到我的注释处理器选项中。我还尝试将、和添加到处理器FQ名称中,但这也没有帮助。 这些是我添加到dependecies下的默认buil

  • 我正在尝试创建一个自定义注释,例如,确保字段或方法既是又是,如果字段或方法既不是又不是,则会生成编译时错误,如以下示例所示: 到目前为止,我已经完成了两个自定义注释接口: 和: 正如所暗示的,我不知道如何生成编译时错误。Processor的文档清楚地表明我不应该抛出异常, 如果处理器抛出未捕获的异常,该工具可能会停止其他活动注释处理器。 它接着描述了当提出错误条件时会发生什么,现在是如何提出错误条

  • 问题内容: 我正在尝试创建一个自定义批注,例如,以确保字段或方法为and ,并且如果该字段或​​方法不为and ,则将生成编译时错误,如以下示例所示: 到目前为止,我已经完成了两个自定义注释接口: 和: 如所示,我不知道如何生成编译时错误。Processor 的文档清楚地表明,我不应该抛出异常, 如果处理器抛出未捕获的异常,则该工具可能会停止其他活动的注释处理器。 它继续描述了引发错误条件时会发生