Lombok android studio plugin

Как использовать плагин lombok в Android Studio?

Я установил Ломбок С -1—>’Плагин’, но он не работает, когда я пытаюсь создать Getter & Setter. Мой код не распознает его.

есть ли у кого-нибудь идея, как настроить Ломбок и использовать его для создания аннотации getter & setter?

4 ответов

вам нужно не только установить Lombok Plugin , но также добавьте зависимость к build.gradle as provided :

в официальных документах есть раздел, связанный с этим:https://projectlombok.org/setup/android

следуйте предыдущим инструкциям (Gradle). В дополнение к правильной настройке вашего проекта gradle вам нужно добавить плагин Lombok IntelliJ, чтобы добавить поддержку lombok в Android Studio:

перейти в Файл > Настройки > Плагины Нажмите на обзор репозиториев. Поиск плагина Lombok Нажмите на установить плагин Перезапустить Android Studio Изменение приложения зависимости блок:

вы можете использовать этот

есть так много сообщений на эту тему его недоумение. Я на следующий: И вырвав большую часть моих волос, пытаясь понять что, черт возьми, происходит с Gradle верхнего уровня и уровня проекта, Единственная комбинация, которая сработала для меня, это: implementation ‘org.projectlombok:lombok:1.18.0’ annotationProcessor ‘org.projectlombok:lombok:1.18.0’ classpath ‘org.projectlombok:lombok:1.18.0’ И вот доказательство:—21—> Мой Бог это действительно так сложно сделать что-то такое простое.

Источник

richardleggett / README.md

What does Lombok do?

In this example I just use the @Data annotation to generate getters/setters, toString() and hashCode() — in reality you may want to use the @Getter annotation and others to exact a more fine grained control (or to generate immutable classes with @Value ).

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

buildscript <
repositories <
mavenCentral()
>
>
apply plugin : ‘ com.android.application ‘
android <
compileSdkVersion 25
buildToolsVersion » 24.0.2 «
defaultConfig <
applicationId » com.myapp «
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName » 0.1 «
jackOptions <
enabled true
>
testInstrumentationRunner » android.support.test.runner.AndroidJUnitRunner «
>
compileOptions <
sourceCompatibility JavaVersion . VERSION_1_8
targetCompatibility JavaVersion . VERSION_1_8
>
buildTypes <
release <
minifyEnabled false
proguardFiles getDefaultProguardFile( ‘ proguard-android.txt ‘ ), ‘ proguard-rules.pro ‘
>
>
productFlavors <
dev <
// dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
// to pre-dex each module and produce an APK that can be tested on
// Android Lollipop without time consuming dex merging processes.
minSdkVersion 21
applicationIdSuffix » .dev «
>
staging <
// staging utilizes minSDKVersion = 21 to allow the Android gradle plugin
// to pre-dex each module and produce an APK that can be tested on
// Android Lollipop without time consuming dex merging processes.
minSdkVersion 21
applicationIdSuffix » .staging «
>
production <
minSdkVersion 15
>
>
packagingOptions <
exclude ‘ LICENSE.txt ‘
>
>
dependencies <
compile fileTree( include : [ ‘ *.jar ‘ ], dir : ‘ libs ‘ )
// Testing framework
testCompile ‘ junit:junit:4.12 ‘
androidTestCompile( ‘ com.android.support.test.espresso:espresso-core:2.2.2 ‘ , <
exclude group : ‘ com.android.support ‘ , module : ‘ support-annotations ‘
>)
testCompile ‘ org.mockito:mockito-core:2.2.8 ‘
androidTestCompile ‘ org.mockito:mockito-core:2.2.8 ‘
// Dagger dependency injection library
provided ‘ javax.annotation:jsr250-api:1.0 ‘
compile ‘ com.google.dagger:dagger:2.7 ‘
annotationProcessor » com.google.dagger:dagger-compiler:2.7 «
// Support libraries
compile ‘ com.android.support:appcompat-v7:25.0.0 ‘
compile ‘ com.android.support.constraint:constraint-layout:1.0.0-alpha4 ‘
// Retrofit and OKHTTP
compile ‘ com.squareup.retrofit2:retrofit:2.1.0 ‘
compile ‘ com.squareup.retrofit2:converter-gson:2.1.0 ‘
compile ‘ com.squareup.retrofit2:converter-scalars:2.1.0 ‘
compile ‘ com.squareup.retrofit2:adapter-rxjava:2.1.0 ‘
compile ‘ com.squareup.okhttp3:okhttp:3.3.0 ‘
compile ‘ com.squareup.okhttp3:logging-interceptor:3.3.0 ‘
// RxJava
compile ‘ io.reactivex:rxjava:1.0 ‘
// Jodatime
compile ‘ joda-time:joda-time:2.9.3 ‘
// Lombok
provided ‘ org.projectlombok:lombok:1.16.10 ‘
>
Читайте также:  Android для чего служит

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript <
repositories <
jcenter()
mavenCentral()
>
dependencies <
classpath ‘ com.android.tools.build:gradle:2.2.2 ‘
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
>
>
allprojects <
repositories <
jcenter()
>
>
task clean ( type : Delete ) <
delete rootProject . buildDir
>

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

package com.myapp ;
import com.google.gson.annotations.SerializedName ;
import org.joda.time.DateTime ;
import lombok.Data ;
/**
* Base for all entities the API returns
*/
@Data
public abstract class BaseModel <
@SerializedName ( » id » )
String id = null ;
@SerializedName ( » createdAt » )
DateTime createdAt = null ;
@SerializedName ( » updatedAt » )
DateTime updatedAt = null ;
@SerializedName ( » modelType » )
String modelType = null ;
>

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

package com.myapp ;
import com.google.gson.annotations.SerializedName ;
import lombok.Data ;
import lombok.EqualsAndHashCode ;
/**
* Some child model class
*/
@Data
@EqualsAndHashCode ( callSuper = true )
public class SampleModel extends BaseModel <
@SerializedName ( » aField » )
private String aField = null ;
>

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

Читайте также:  Геймпад для телевизора xiaomi android
package com.myapp.test ;
import com.myapp.api.model.SampleModel ;
import com.myapp.api.model.BaseModel ;
import org.joda.time.DateTime ;
import org.junit.Test ;
import static junit.framework.Assert.assertEquals ;
/**
* Tests that Lombok is correctly generating our model class methods
*/
public class LombokDomainModelTest <
@Test
public void sampleModelHasBaseModelFields () <
DateTime now = DateTime . now();
SampleModel model = new SampleModel ();
model . setCreatedAt(now);
assertEquals(now, model . getCreatedAt());
>
@Test
public void identicalSampleModelsHaveEquality () <
DateTime now = DateTime . now();
SampleModel model = new SampleModel ();
model . setCreatedAt(now);
SampleModel model2 = new SampleModel ();
model2 . setCreatedAt(now);
assertEquals(model, model2);
>
>

This comment has been minimized.

Copy link Quote reply

Toilal commented Sep 11, 2017 •

Have you tried using @Builder annotation ? It seems to fail compiling, with Error:(xxx, xxx) Gradle: The method builder() is undefined for the type xxxxxxxxxxxxxxxx

Источник

Шпаргалки Java программиста 10: Lombok

Lombok — проект по добавлению дополнительной функциональности в Java c помощью изменения исходного кода перед Java компиляцией.

По сути, проект Lombok позволяет избавиться от многословности Java в большинстве случаев и перестать писать огромные простыни кода из гетеров, сеттеров, equals, hashcode и toString (да их обычно генерит IDE, но читать и менять все равно приходится программисту), в результате Java становиться почти такой же краткой как Kotlin, Scala или C#.

Что особенно радует, Lombok очень прост и легок в добавлении к вашему проекту. Если вам, как и мне, нравится принцип KISS, то советую посмотреть на Lombok.

Так же рекомендую, посмотреть на другие статьи цикла, например последную шпаргалку по Java SE8

Добавление в проекты очень простое, достаточно добавить обычные зависимости:

Так же можно (но не обязательно добавить плагин для работы статических компиляторов, если нужно анализировать код после компиляции Lombok), см. тут

Так же есть плагины для Idea, Eclipse и т.п. Если вы собираете Gradle или Maven, то собираться будет и без этих плагинов, но будут Idea/Eclipse возможно будут показывать ошибки при анализе кода.

Название Описание Пример Lombok Пример обычной Java
@NonNull обработка переменных,
которые не должны получать null
@Getter /
@Setter
легкое создание getter’ов и
setter’ов
@ToString определение аннотации перед классом,
для реализации стандартного toString метода
@EqualsAndHashCode легкое создание методов Equals и HashCode
@NoArgsConstructor,
@RequiredArgsConstructor,
@AllArgsConstructor
создания пустого конструктора,
конструктора включающего все final поля,
либо конструктора включающего все возможные поля
@Data генерация всех служебных методов,
заменяет сразу команды @ToString, @EqualsAndHashCode,
Getter, Setter, @RequiredArgsConstructor
@Value создание неизменяемых классов,
аналог Data, но для неизменяемых классов
@Builder реализация паттерна bulder,
Singular – используется для объектов в
единственном экземпляре (добавления элемента
в коллекции и т.п.)
@SneakyThrows обертка проверяемых исключений @SneakyThrows(
UnsupportedEncodingException.class)
public String utf8ToString(byte[] bytes) <
return new String(bytes, «UTF-8»);
>
@Synchronized простое создание synchronized блоков
@Log добавление инницилизации логирования,
так же позволяет выбрать вид логгера: @CommonsLog,
@JBossLog, Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j
Val простое создание финальной
переменной с выводом типа,
то есть то самый val о котором
спорили
@Cleanup простое определение ресурсов,
так чтобы они автоматически закрывались
после окончания работы кода.
(не так актуально при использовании
try with resources )

Название: @NonNull
Описание: обработка переменных,
которые не должны получать null
Код Lombok:
Код обычной Java:

Название: Getter /
Setter
Описание: легкое создание getter’ов и
setter’ов
Код Lombok:
Код обычной Java:

Название: @ToString
Описание: определение аннотации перед классом,
для реализации стандартного toString метода
Код Lombok:
Код обычной Java:

Название: @EqualsAndHashCode
Описание: легкое создание методов Equals и HashCode
Код Lombok:
Код обычной Java:

Название:
@NoArgsConstructor,
@RequiredArgsConstructor,
@AllArgsConstructor
Описание: создания пустого конструктора,
конструктора включающего все final поля,
либо конструктора включающего все возможные поля
Код Lombok:
Код обычной Java:

Название: Data
Описание: генерация всех служебных методов,
заменяет сразу команды @ToString, @EqualsAndHashCode,
Getter, Setter, @RequiredArgsConstructor
Код Lombok:

Название: Value
Описание: создание неизменяемых классов,
аналог Data, но для неизменяемых классов
Код Lombok:

Название: Builder
Описание: реализация паттерна bulder,
Singular – используется для объектов в
единственном экземпляре (добавления элемента
в коллекции и т.п.)
Код Lombok:

Название: @SneakyThrows
Описание: обертка проверяемых исключений
Код Lombok:

@SneakyThrows(
UnsupportedEncodingException.class)
public String utf8ToString(byte[] bytes) <
return new String(bytes, «UTF-8»);
>

Название: @Synchronized
Описание: простое создание synchronized блоков
Код Lombok:

Название: Log
Описание: добавление инницилизации логирования,
так же позволяет выбрать вид логгера: @CommonsLog,
@JBossLog, Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j
Код Lombok:
Код обычной Java:

Val простое создание финальной
переменной с выводом типа,
то есть то самый val о котором
спорили

Название: @Cleanup
Описание: простое определение ресурсов,
так чтобы они автоматически закрывались
после окончания работы кода.
(не так актуально при использовании
try with resources )
Код Lombok:
Код обычной Java:

Источник

Читайте также:  Виртуальные номера для андроид
Оцените статью