android10 / android10/Android-CleanArchitecture

AutoValue in domain module : Cannot resolve symbol generated AutoValue_Foo

Abierto
#246 1 comentario 2 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Java
Estrellas
15.5k
Forks
3.3k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza con el build.gradle del módulo domain y reproduce la discrepancia entre la advertencia de Android Studio de que no se puede resolver AutoValue_Trip y el build correcto. Inspecciona cómo se exponen a la IDE las fuentes generadas por apt, incluido el sourceSet generado que se intentó, y verifica que compileJava siga ejecutándose correctamente sin introducir errores en las rutas de fuentes. Se considera terminado cuando Android Studio reconoce la clase generada sin romper la compilación.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
android, java
Área
build-system, developer-experience
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.