0

当我javac在命令行上使用处理单个类的注释时,我可以执行以下操作:

$ javac -proc:only -cp target/classes -sourcepath target/classes x.y.z.Bar

我想在 Maven 中做同样的事情,除了使用target/classes目录中的所有类而不是只指定一个类文件。我不想指定任何 java 源文件(隐式或显式),因为我想避免多次加载和解析源文件。

这是否可以配置maven-compiler-plugin为仅加载类文件,而不是加载 java 源文件?我尝试添加以下配置:

<plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.5.1</version>
  <executions>
    <execution>
      <id>process-annotations</id>
      <phase>compile</phase>
      <goals><goal>compile</goal></goals>
      <configuration>
        <!-- Annotation processing only -->
        <proc>only</proc>
        <!-- Include all class files in target/classes directory. -->
        <includes>
          <include>${project.build.outputDirectory}/**/*.class</include>
        </include>
      </configuration>
    </execution>
  </executions>
</plugin>

但我Nothing to compile - all classes are up to date在插件输出中看到,并没有执行注释处理。

不确定这是否可能,但如果是这样,那就太好了。

编辑#1

实际上这个<includes>选项是不对的,因为javac -proc:only接受类名而不是类文件名(例如xyzFoo不是x/y/z/Foo.class)。我在插件输出中看到以下内容:

compileSourceRoots=[..mumble../foo/src/main/java]

我认为不能在插件配置中更改。看起来并不乐观。

4

0 回答 0