programing

그라들 사용법.자바와 그루비가 함께?

javajsp 2023. 7. 13. 20:39

그라들 사용법.자바와 그루비가 함께?

IntelliJ 13에서 Gradle 프로젝트를 사용하려고 하지만 다음과 같은 문제가 계속 발생합니다.

  • Java 파일이 Groovy 파일을 볼 수 없음
  • IntelliJ는 Groovy를 잊은 것처럼 보이며 GDK를 구성하라는 메시지를 표시합니다.

그루비 플러그인은 그루비와 자바가 혼합된 자체 소스 경로를 허용하지만 자바는 자체 소스 경로를 원한다고 읽었습니다.그래서 저는 다음과 같은 디렉토리 구조를 가지고 있습니다.

  • src\main\groovy
  • src\main\sys
  • src\test\groovy

저는 자바와 그루비 수업이 혼합되어 있습니다.

여기 제 빌드가 있습니다.gradle:

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'jacoco'
apply plugin: 'war'


buildscript {
    repositories {
        maven { url "http://repo.spring.io/libs-snapshot" }
        mavenLocal()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.0.0.RC4")
    }
}

jar {
    baseName = 'my-app'
    version = '0.1.0'
}

repositories {
    mavenCentral()
    maven { url "http://repo.spring.io/libs-snapshot" }
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-data-jpa:1.0.0.RC4")
    compile("org.springframework:spring-orm:4.0.0.RC1")
    compile("org.hibernate:hibernate-entitymanager:4.2.1.Final")
    compile("com.h2database:h2:1.3.172")
    compile("joda-time:joda-time:2.3")
    compile("org.thymeleaf:thymeleaf-spring4")
    compile("org.codehaus.groovy.modules.http-builder:http-builder:0.7.1")
    compile ('org.codehaus.groovy:groovy-all:2.2.1')

    testCompile('org.spockframework:spock-core:0.7-groovy-2.0') {
        exclude group: 'org.codehaus.groovy', module: 'groovy-all'
    }
    testCompile('org.codehaus.groovy.modules.http-builder:http-builder:0.7+')
    testCompile("junit:junit")
}

jacocoTestReport {
  <!-- not sure this is right  -->
    group = "Reporting"
    description = "Generate Jacoco coverage reports after running tests."
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.11'
}

다음은 "gradle clean build"를 실행할 때 발생하는 빌드 오류입니다.

...src/main/java/com/product/service/FileDownloadService.java:24:  cannot find symbol 
symbol  : class FileDownload 
location: class com.product.service.FileDownloadService

private FileDownload fileDownload;

모든 것을 Java로 만들면 컴파일 또는 실행 오류가 발생하지 않습니다.

위에서 언급한 것처럼 groovy 플러그인으로 컴파일하면 Java 클래스도 컴파일됩니다.자바 컴파일 작업이 groovy 작업뿐만 아니라 소스에서 실행되지 않는지 확인해야 합니다.

이를 위해 원본 폴더(예: 이클립스)를 유지하려면 build.gradle에서 다음과 같이 정제된 스니펫을 사용할 수 있습니다.

apply plugin: 'groovy'
//...
sourceSets {
  main {
    java { srcDirs = [] }    // no source dirs for the java compiler
    groovy { srcDirs = ["src/main/java", "src/main/groovy"] }  // compile   everything in src/ with groovy
  }
}

만약 당신이 단지 지정한다면.groovy { srcDir "src" },당신의.main/groovy그리고.main/java폴더는 이클립스에서 패키지로 식별됩니다...

다음 줄에 "build.gradle" 파일을 추가합니다.

sourceSets {
      main {
        java { srcDirs = [] }    // no source dirs for the java compiler
        groovy { srcDir "src" }  // compile everything in src/ with groovy
       }
    }

제가 영어를 잘 못해서 죄송합니다.이것이 당신의 해결에 도움이 되기를 바랍니다.

제 솔루션은 Java 및 Groovy 클래스를 모두 src/main/groovy 및 src/test/groovy(테스트 클래스용)에 배치하는 것입니다.컴파일러의 관점에서 이는 다른 답변에서 제안된 sourceSets의 변경 사항과 매우 유사한 결과를 초래할 것입니다.

사용자 관점에서는 원본 파일을 별도의 폴더 계층 구조로 유지하는 것이 실제로 도움이 되지 않는다고 생각합니다.또한 최적의 구현을 선택하기 위해 클래스를 Java와 Groovy 간에 마이그레이션할 수 있습니다.

주요 이점은 Gradle의 빌드 스크립트에서 구성 없이 바로 작동한다는 것입니다.그래서 그것은 일을 단순하게 유지하는 데 도움이 됩니다.

언급URL : https://stackoverflow.com/questions/22369033/how-to-use-gradle-java-and-groovy-together