android10 / android10/Android-CleanArchitecture
AutoValue in domain module : Cannot resolve symbol generated AutoValue_Foo
- 主要言語
- Java
- スター
- 15.5k
- フォーク
- 3.3k
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
I am trying to use AutoValue in the domain module.
Here is the AutoValue class data implementation :
```
import com.google.auto.value.AutoValue;
import org.jetbrains.annotations.Nullable;
import java.util.Date;
@AutoValue
public abstract class Trip {
public abstract int id();
public abstract String name();
public abstract int totalDistance();
@Nullable public abstract Date startDate();
@Nullable public abstract Date endDate();
public static Builder builder() {
return new AutoValue_Trip.Builder().totalDistance(0);
}
@AutoValue.Builder
public abstract static class Builder {
public abstract Builder id(int id);
public abstract Builder name(String name);
public abstract Builder totalDistance(int totalDistance);
public abstract Builder startDate(Date startDate);
public abstract Builder endDate(Date endDate);
public abstract Trip build();
}
}
```
Android Studio cannot find the generated AutoValue_Trip class, so it marks it as an error however, the project builds and runs just fine.
Here is my module's build.gradle file
```
buildscript {
repositories {
mavenCentral()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.2.3'
classpath "net.ltgt.gradle:gradle-apt-plugin:0.12"
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: "net.ltgt.apt"
apply plugin: 'me.tatarka.retrolambda'
//noinspection GroovyUnusedAssignment
sourceCompatibility = 1.8
//noinspection GroovyUnusedAssignment
targetCompatibility = 1.8
configurations {
provided
}
sourceSets {
main {
compileClasspath += configurations.provided
}
}
dependencies {
def domainDependencies = rootProject.ext.domainDependencies
def domainTestDependencies = rootProject.ext.domainTestDependencies
apt domainDependencies.autoValue
compileOnly domainDependencies.autoValue
provided domainDependencies.javaxAnnotation
compile domainDependencies.javaxInject
compile domainDependencies.rxJava
compile domainDependencies.arrow
testCompile domainTestDependencies.junit
testCompile domainTestDependencies.mockito
testCompile domainTestDependencies.assertj
}
```
I have tried using a sourceSet as follows to add the generated build files and folders to the source path:
```
main {
java {
srcDirs += 'src/../build/generated'
}
}
```
But then I was getting compileJava errors.
Has anyone ran into this issue and how did you correct it? Additional info will be provided if necessary.
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
domain モジュールの build.gradle から始め、Android Studio で AutoValue_Trip を解決できないという警告が表示される一方で、build は成功するという不一致を再現します。apt によって生成されたソースが IDE にどのように公開されているかを、試行した生成 sourceSet も含めて調査し、ソースパスのエラーを導入せずに compileJava が引き続き成功することを確認します。生成されたクラスが Android Studio で認識され、コンパイルを壊さないことを確認できれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- android, java
- 領域
- build-system, developer-experience
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 25/100