当我在命令行上使用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]
我不认为可以在插件配置中更改。看起来并不乐观。