当我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]
我认为不能在插件配置中更改。看起来并不乐观。