【发布时间】:2016-08-12 20:49:07
【问题描述】:
我是注释处理的新手,我正在尝试使用 Maven 将其自动化。我把它放在我的 pom.xml 中:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<annotationProcessors>
<annotationProcessor>
co.aurasphere.revolver.annotation.processor.InjectAnnotationProcessor</annotationProcessor>
<annotationProcessor>
co.aurasphere.revolver.annotation.processor.RevolverContextAnnotationProcessor</annotationProcessor>
</annotationProcessors>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
问题是,当我尝试构建项目时,我得到了 CompilationFailureException,因为 Maven 找不到处理器。
我发现了其他类似的问题,通过将依赖项放在插件之外来解决。我试过了,但对我来说没有任何改变。
我错过了什么吗?
谢谢。
编辑
这是我对另一个同时包含处理器和注释的项目的依赖:
<dependencies>
<dependency>
<groupId>co.aurasphere</groupId>
<artifactId>revolver-annotation-processor</artifactId>
<version>0.0.3-SNAPSHOT</version>
</dependency>
</dependencies>
编辑 2:
经过进一步调查,我决定反编译处理器 JAR(使用 Maven 构建),碰巧……我的类不存在。由于某些原因,Maven 没有将我的类编译到 JAR 中,这就是找不到这些类的原因。我已经尝试弄清楚该构建出了什么问题(这在我之前从未发生过,而且我已经使用 Maven 一段时间了......)。
首先,该项目的包装是jar。 这些类都在 src/main/java 下。 我在 pom.xml 中检查了类路径和源路径是相同的。
这是处理器 pom:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>co.aurasphere</groupId>
<artifactId>revolver-annotation-processor</artifactId>
<version>0.0.3-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- https://mvnrepository.com/artifact/javax.inject/javax.inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
</dependencies>
编辑 3
Here 是处理器项目上的 Maven 全新安装的输出。不幸的是,输出太长了,即使我知道它不好,我也不得不发布一个外部链接。
编辑 4
由于该项目最初是作为 Eclipse 简单 Java 项目创建的,然后转换为 Maven 项目,因此我尝试创建一个新的 Maven 项目并将所有内容移至新项目,希望问题出在 Eclipse 插件搞砸了出了点问题,但错误仍然存在。
【问题讨论】:
-
请发布您如何定义对
co.aurasphere.revolver...包的依赖项。它们不在您尝试编译的项目内部,是吗? -
请注意,您必须在构建使用它们的项目之前构建注释处理器。
标签: java maven annotations annotation-processing