Java 使用带有gradle和弹簧靴的lombok
我正试图建立一个项目与龙目,这是我作为dependencieJava 使用带有gradle和弹簧靴的lombok,java,spring-boot,gradle,lombok,Java,Spring Boot,Gradle,Lombok,我正试图建立一个项目与龙目,这是我作为dependencie dependencies { compile("org.springframework.boot:spring-boot-starter-thymeleaf") compile("org.springframework.social:spring-social-facebook") compile("org.springframework.social:spring-social-twitter") testC
dependencies {
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
compile("org.springframework.social:spring-social-facebook")
compile("org.springframework.social:spring-social-twitter")
testCompile("org.springframework.boot:spring-boot-starter-test")
testCompile("junit:junit")
compile("org.springframework.boot:spring-boot-devtools")
compile("org.springframework.boot:spring-boot-starter-data-jpa")
compile("mysql:mysql-connector-java")
compileOnly("org.projectlombok:lombok:1.16.10")
}
我能把这些涂鸦也包括进去,我在编辑中也加入了龙目舞。我甚至能够使用lombok编译代码,并对lombok生成的方法进行cal
这是我的实体:
@Data
@Entity
@Table(name = "TEA_USER", uniqueConstraints = {
@UniqueConstraint(columnNames = { "USR_EMAIL" }),
@UniqueConstraint(columnNames = { "USR_NAME" })
})
public class User {
@NotNull
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="USR_ID")
private long id;
@NotNull
@Column(name="USR_FNAME")
private String firstName;
@NotNull
@Column(name="USR_LNAME")
private String lastName;
@NotNull
@Min(5)
@Max(30)
@Column(name="USR_NAME")
private String username;
@Column(name="USR_EMAIL")
private String email;
@Min(8)
@NotNull
@Column(name="USR_PASSWORD")
private String password;
}
这是一个编译良好的函数:
@PostMapping("/registration/register")
public String doRegister (@ModelAttribute @Valid User user, BindingResult result){
user.getEmail();
System.out.println(user.getFirstName());
if (result.hasErrors()) {
return "register/customRegister";
}
this.userRepository.save(user);
return "register/customRegistered";
}
但当我运行bootRun并尝试访问函数性时,我得到的是一个例外:
org.springframework.beans.NotReadablePropertyException: Invalid property 'firstName' of bean class [com.lucasfrossard.entities.User]: Bean property 'firstName' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
但是,如果我手动包含setter和getter,这就可以了。我不知道发生了什么,也不知道如何修复它。有什么想法吗?经过一段时间的努力,我发现这个插件可以做到: 我的gradle文件如下所示:
buildscript {
repositories {
maven { url "https://repo.spring.io/libs-milestone" }
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.0.RELEASE")
classpath 'org.springframework:springloaded:1.2.6.RELEASE'
}
}
plugins {
id 'io.franzbecker.gradle-lombok' version '1.8'
id 'java'
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
jar {
baseName = 'gs-accessing-facebook'
version = '0.1.0'
}
repositories {
mavenCentral()
maven { url "https://repo.spring.io/libs-milestone" }
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
// compile("org.projectlombok:lombok:1.16.10")
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
compile("org.springframework.social:spring-social-facebook")
compile("org.springframework.social:spring-social-twitter")
testCompile("org.springframework.boot:spring-boot-starter-test")
testCompile("junit:junit")
compile("org.springframework.boot:spring-boot-devtools")
compile("org.springframework.boot:spring-boot-starter-data-jpa")
compile("mysql:mysql-connector-java")
}
idea {
module {
inheritOutputDirs = false
outputDir = file("$buildDir/classes/main/")
}
}
bootRun {
addResources = true
jvmArgs "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"
}
我以前遇到过这个插件,但我做错了什么,它不起作用。我很高兴它现在起作用了
谢谢 最新的Lombok 1.18非常简单<代码>io.franzbecker.gradle lombok插件不是必需的。我的项目中的依赖项示例:
dependencies {
implementation "org.springframework.boot:spring-boot-starter-thymeleaf"
implementation "org.springframework.social:spring-social-facebook"
implementation "org.springframework.social:spring-social-twitter"
implementation "org.springframework.boot:spring-boot-starter-data-jpa"
testImplementation "org.springframework.boot:spring-boot-starter-test"
runtimeClasspath "org.springframework.boot:spring-boot-devtools"
runtime "mysql:mysql-connector-java"
// https://projectlombok.org
compileOnly 'org.projectlombok:lombok:1.18.4'
annotationProcessor 'org.projectlombok:lombok:1.18.4'
}
其他建议:
testCompile(“junit:junit”)
不是必需的,因为springbootstarter测试
“starter”实现
或api
配置,而不是编译
(自)李>
devtools
使用compile
配置。指南提示:
在Maven中将依赖项标记为可选,或者在Gradle中使用自定义的developmentOnly
配置(如上所示),这是一种最佳做法,可以防止devtools被过渡地应用于使用您的项目的其他模块
如果您使用的是
Eclipse
或它的一个分支(我使用的是Spring工具套件4.5.1.RELEASE
,相同的步骤适用于其他版本),那么您需要做的就是:
- 在
中,您只需要此配置:build.gradle
dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' }
- 然后,右键单击项目>渐变>刷新渐变项目。
lombok-“version”.jar将出现在项目的项目和外部依赖项中
- 右键单击
>运行方式>Java应用程序(类似于双击实际的jar或在命令行上运行lombok-“version”.jar
)Java-jar lombok-“version”.jar
- 将出现一个GUI,按照所有说明操作,它所做的一件事是将
复制到IDE的根文件夹中lombok.jar
- 您需要做的另一件事是将
添加到您的项目构建/类路径中lombok.jar
就这样,干杯
p.S有关更多信息,您可以访问此插件,尽管它不是必需的。我们也有此设置,不需要额外的插件。您使用的是哪个IDE?我想你应该为你的IDE安装插件?这个插件帮了我很多,谢谢!你能解释一下为什么会这样吗?在maven项目中,使用lombok添加一个插件就足够了,但在gradle中,我们需要一些奇怪的插件来代替它。这可能是因为该插件自动激活java编译器的注释处理。它应该和代码的实际运行无关,lombok只做编译类型的事情。但是,我不确定在gradle/LombokConfiged的最新版本中是否真的需要使用该插件,这里不需要该插件,只是将compileOnly'org.projectlombok:lombok:1.18.2'作为依赖项包含在内。在本项目中使用gradle 4.5.1。谢谢。annotationProcessor'org.projectlombok:lombok'为我解决了这个问题