Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用带有gradle和弹簧靴的lombok_Java_Spring Boot_Gradle_Lombok - Fatal编程技术网

Java 使用带有gradle和弹簧靴的lombok

Java 使用带有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

我正试图建立一个项目与龙目,这是我作为dependencie

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被过渡地应用于使用您的项目的其他模块

  • 如果使用IntelliJ IDEA,请确保已安装并启用。为了让新手更容易进行初始项目设置,您还可以将Lombok插件指定为


  • 如果您使用的是
    Eclipse
    或它的一个分支(我使用的是Spring工具套件
    4.5.1.RELEASE
    ,相同的步骤适用于其他版本),那么您需要做的就是:

    • build.gradle
      中,您只需要此配置:

      dependencies {
        compileOnly 'org.projectlombok:lombok'  
        annotationProcessor 'org.projectlombok:lombok'
      }
      
    • 然后,右键单击项目>渐变>刷新渐变项目。
      lombok-“version”.jar将出现在项目的项目和外部依赖项中

    • 右键单击
      lombok-“version”.jar
      >运行方式>Java应用程序(类似于双击实际的jar或在命令行上运行
      Java-jar lombok-“version”.jar

    • 将出现一个GUI,按照所有说明操作,它所做的一件事是将
      lombok.jar
      复制到IDE的根文件夹中

    • 您需要做的另一件事是将
      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'为我解决了这个问题