2017-02-06 24 views
8

Tôi có một hội nhập thư mục nguồn thử nghiệm thiết lập trong gradle như vậy:Đánh dấu Gradle nguồn thư mục như là nguồn thử nghiệm trong IntelliJ

subprojects { 
    apply plugin: 'java' 
    apply plugin: 'idea' 

    sourceCompatibility = 1.8 

    configurations { 
     integrationTestCompile.extendsFrom testCompile 
     integrationTestCompileOnly.extendsFrom integrationTestCompile 
     integrationTestCompileOnly.extendsFrom testCompileOnly 
     integrationTestRuntime.extendsFrom testRuntime 
    } 

    sourceSets { 
     integrationTest { 
      java { 
       compileClasspath += main.output + test.output 
       runtimeClasspath += main.output + test.output 
       srcDir file('src/integrationTest/java') 
      } 
      resources.srcDir file('src/integrationTest/resources') 
     } 
    } 

    task integrationTest(type:Test) { 
     testClassesDir = sourceSets.integrationTest.output.classesDir 
     classpath = sourceSets.integrationTest.runtimeClasspath 
     outputs.upToDateWhen { false } 
    } 
} 

Đối với thực hiện các bài kiểm tra, công trình này hoàn toàn tốt, nhưng nó gây ra vấn đề với thanh tra IntelliJ của , có thể thay đổi hành vi đối với mã thử nghiệm. IntelliJ không nhận ra thư mục nguồn là nguồn thử nghiệm.

tôi đã cố gắng thêm chúng như vậy (bên subprojects):

idea { 
    module { 
     testSourceDirs += file('src/integrationTest/java') 
    } 
} 

nhưng điều đó không giúp gì cả. Tôi cũng đã cố gắng tự đánh dấu chúng là nguồn thử nghiệm (menu ngữ cảnh -> đánh dấu thư mục là -> nguồn kiểm tra gốc), nhưng IntelliJ nhanh chóng ghi đè ngược lại nguồn gốc bình thường.

Làm cách nào để định cấu hình chính xác trong Gradle?

Tôi đang sử dụng IntelliJ 2016/01/03 và Gradle 2.14.1 trên Ubuntu 16,04

+3

Bạn đã tạo lại các tệp IDEA sau khi thực hiện thay đổi như thế nào? Điều này sẽ làm việc (và tôi đã thử nghiệm nó cục bộ) - thử chạy '$ ./gradlew cleanIdea idea' – tddmonkey

+0

Tôi muốn có một giải pháp mà Gradle không tạo ra cấu hình Idea của tôi, vì cũng có các dự án không Gradle trong cùng một repo. – Jorn

+0

@tddmonkey Giải pháp của bạn tạo ra các tệp '.iml' chính xác, nhưng IntelliJ không sử dụng chúng. Bạn có biết làm thế nào tôi nhận được nó để làm điều đó? Dự án Java là một thư mục con của một dự án khác, và dự án đó là dự án chính với một thư mục '.idea' để cấu hình. – Jorn

Trả lời

1

Bạn sẽ cần phải chắc chắn nguồn thử nghiệm là nguồn duy nhất cho gói này sau đó

idea { 
    module { 
     sourceDirs -= file('src/integrationTest/java') 
     testSourceDirs += file('src/integrationTest/java') 
    } 
} 

và sau đó bạn sẽ cần phải gradle cleanIdea idea để tạo lại các tệp IntelliJ.

sourceSets { 
    integrationTest { 
     java { 
      compileClasspath += main.output + test.output 
      runtimeClasspath += main.output + test.output 
      srcDir "$projectDir/src/integrationTest/java" 
     } 
     resources.srcDir "$projectDir/src/integrationTest/resources" 
    } 
} 
+1

Không, điều này không thay đổi gì cả. – Jorn

+0

@Jorn thử thay đổi nó như tôi đã đề xuất trong bản chỉnh sửa, không chắc chắn về tệp 'của bạn()' nhưng tôi có xu hướng chỉ định toàn bộ đường dẫn đến nguồn. Cũng như bạn sử dụng Idea plugin trong Gradle hoặc bạn sử dụng tích hợp Gradle trong IntelliJ IDE? – LazerBanana

Các vấn đề liên quan