我做了small zip example来说明问题。
我在项目中有来自AutoValue example的Animal类和一个maven pom文件来进行代码生成和编译。见下文。
正常运行mvn clean install
并生成并编译所有内容到target/classes
:
问题是IntelliJ无法识别AutoValue_Animal
:
那么如何让IntelliJ IDEA识别构建时生成的源?
*最好不需要更改IDEA特定设置,以便在Maven周围保持开发环境。
类别:
package kilaka;
import com.google.auto.value.AutoValue;
@AutoValue
public abstract class Animal {
static Animal create(String name, int numberOfLegs) {
// See "How do I...?" below for nested classes.
return new AutoValue_Animal(name, numberOfLegs);
}
abstract String name();
abstract int numberOfLegs();
}
的pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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>kilaka</groupId>
<artifactId>auto-test</artifactId>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.google.auto.value</groupId>
<artifactId>auto-value</artifactId>
<version>1.2</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
答案 0 :(得分:0)
找到一个对我有用的解决方案,但不喜欢它。我取消标记了target
中的Excluded
文件夹,并将classes
标记为Sources
。
为了继续排除所有其他目标文件夹,我必须将所有其他文件夹标记为已排除。
这是一个错误的解决方案,因为:
target
文件夹,则需要手动排除它们。答案 1 :(得分:0)
以下似乎解决了这个问题:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5</version>
<configuration>
<source>6</source>
<target>6</target>
</configuration>
</plugin>
这导致文件AutoValue_Animal.java
在target/generated-sources/annotations
中生成,IntelliJ IDEA在没有任何额外调整的情况下读取。
我读到Java 5中不支持注释处理(但是生成了类)。查看更多信息here。