Использование Dagger2 с Lombok - PullRequest
0 голосов
/ 16 мая 2018

Кто-нибудь использовал Lombok 1.16 с Dagger2?

Мой текущий код выглядит так:

@AllArgsConstructor(onConstructor = @__(@Inject))
public class JuiceMaker {
    private final Apple apple;

Ошибка:

JuiceMaker cannot be provided without an @Inject constructor or from an @Provides-annotated method.

Без аннотации Lombok этона самом деле работает, так:

public class JuiceMaker {
    private final Apple apple;
    @Inject
    public JuiceMaker(Apple apple){
        this.apple = apple
    }
}

работает

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Это версия моего ответа, скопированная и вставленная здесь :

Это не прямой ответ на вопрос, который, похоже, решен, но служит ссылкой для будущих пользователей:

Если вы используете Dagger (или что-то еще) для обработки ваших аннотаций, таких как

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.7.0</version>
      <configuration>
        <annotationProcessorPaths>
          <path>
            <groupId>com.google.dagger</groupId>
            <artifactId>dagger-compiler</artifactId>
            <version>2.15</version>
          </path>
        </annotationProcessorPaths>
        <source>1.8</source>
        <target>1.8</target>
      </configuration>
    </plugin>
    ....
  </plugins>
</build>

Вы должны добавить сюда ломбок в виде пути, подобного

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.7.0</version>
      <configuration>
        <annotationProcessorPaths>
          <path>
            <groupId>com.google.dagger</groupId>
            <artifactId>dagger-compiler</artifactId>
            <version>2.15</version>
          </path>

          <!-- SOLUTION --> 
          <path>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.20</version>
          </path>


        </annotationProcessorPaths>
        <source>1.8</source>
        <target>1.8</target>
      </configuration>
    </plugin>
    ....
  </plugins>
</build>

НоВы все еще должны перечислить lombok как предоставленную зависимость;)

0 голосов
/ 27 августа 2018

Проблема в том, что к тому времени, когда процессор аннотаций кинжала ищет конструкторы @Inject, они не были сгенерированы lombok. Одним из решений может быть деломбок источника, а затем скомпилировать его. Но я лично этого не делал.

...