如何使用渐变。Java和Groovy在一起?

2022-09-02 03:16:38

我正在尝试在IntelliJ 13中使用Gradle项目,但我不断遇到以下问题:

  • Java 文件无法看到 Groovy 文件
  • IntelliJ似乎忘记了Groovy,并提示我为它配置GDK。

我读到时髦插件允许Groovy和Java混合自己的源代码路径,但Java想要自己的。所以我有以下目录结构:

  • src\main\groovy
  • src\main\java
  • src\test\groovy

我有Java和Groovy类的混合

这是我的build.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,那么我不会得到任何编译或执行错误。


答案 1

如上所述,使用时髦插件进行编译也将编译java类。我们只需要确保java编译任务不会像时髦的任务那样在源代码上触发......

为此,并保留源文件夹(例如:在 eclipse 中),您可以在 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
  }
}

如果您只是指定 ,您的和文件夹将被标识为 eclipse 中的软件包...groovy { srcDir "src" }main/groovymain/java


答案 2

尝试将下一行追加到文件“build.gradle”

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

请原谅我的英语不好。我希望这可以帮助您的解决方案。


推荐