2013-07-18 21 views
6

Tôi đang làm việc trên một dự án web Java sử dụng Liquibase groovy DSL để quản lý các thay đổi DB. Vì lợi ích của chủ đề này, nó có thể là bất kỳ thư viện bên thứ ba nào khác sử dụng các tệp *.groovy làm nguồn. Dự án được xây dựng với độ ưu việt. Trong một trong các mô-đun của tôi (dao-base) trong thư mục src/main/resources Tôi có tệp groovy (changelog01.groovy, master_changelog.groovy v.v.). các tệp này sẽ được nạp bởi bình chứa chất lỏng trong thời gian chạy.IntelliJ + groovy DSL: Làm cách nào để loại trừ các tệp được biên dịch bởi plugin groovy?

Bây giờ khi tôi cố gắng làm cho các dự án trong IntelliJ nó mang lại cho các thông báo lỗi sau:

Groovyc: Không thể biên dịch file Groovy: không có thư viện Groovy được định nghĩa cho module 'dao-base.

Tôi hiểu rằng plugin groovy phát hiện các tệp *.groovy, cố gắng biên dịch chúng và không đáng ngạc nhiên là không thành công. đây là những tập tin DSL groovy mà nên được nạp chỉ bởi bộ phân tích cú pháp liquibase bên thứ 3 và tôi không cần plugin groovy của IntelliJ để thử và biên dịch chúng.

Tôi đã quản lý để đưa ra 2 giải pháp một phần: 1. tắt plugin groovy trong intellij. Vấn đề với giải pháp này là plugin gradle phụ thuộc vào plugin groovy và do đó sẽ tự động bị tắt khi vô hiệu hóa plugin groovy. Tôi cần plugin gradle được bật. 2. không bao gồm thư mục src/main/resources trong cài đặt dự án -> mô-đun ->dao-base (mô đun của tôi) -> tab nguồn. Vấn đề với giải pháp này là khi tôi xây dựng dự án và triển khai lên tomcat, các tệp từ thư mục tài nguyên bị thiếu và vì các tệp trong nó được yêu cầu trong thời gian chạy, tôi nhận được tệp không tìm thấy ngoại lệ khi tải chiến tranh.

Tôi đã hy vọng một người nào đó có thể đưa ra giải pháp tốt hơn cho vấn đề này.

Trả lời

14

Hãy thử loại bỏ các tập tin suffix groovy từ danh sách tài nguyên của trình biên dịch:

Cài đặt -> Compiler

IntelliJ IDEA Compiler Settings

+1

Cảm ơn. Điều này giải quyết được vấn đề của tôi. Nó đơn giản nhưng bằng cách nào đó tôi đã bỏ qua điều này. –

0

Bạn đang tạo ra các dự án với các Gradle Idea Plugin IntelliJ? Nếu vậy, bạn có thể thêm các tập tin groovy vào danh sách nguồn biên dịch trong IntelliJ qua gradle bằng cách thêm này để build.gradle:

idea { 
    project { 
    // customize the .ipr file generation. 
    ipr { 
     withXml { xmlProvider -> 
     def project = xmlProvider.asNode() 

     // Add appropriate groovy files to the compiler resources. These files will not be compiled by the groovy compiler but will be copied to the classes directory during compilation. 
     def compilerSettings = project.component.find { [email protected] == 'CompilerConfiguration' } 
     compilerSettings.wildcardResourcePatterns*.appendNode('entry', [name: '*/changelog*.groovy']) 
     compilerSettings.wildcardResourcePatterns*.appendNode('entry', [name: '*/master_changelog.groovy']) 
     } 

    } 
    } 
} 

này là tốt đẹp bởi vì bạn sẽ không phải nhớ để làm điều này bằng tay khi bạn tạo dự án từ gradle.

-1

Tôi đã gặp phải sự cố tương tự. Tôi vô hiệu hóa plugin groovy từ thiết lập sau đó biên dịch thành công cũng như thực hiện dự án của tôi.

+0

Nó cũng sẽ vô hiệu hóa tính năng Gradle trong IntelliJ. Ý tưởng tồi. – aldrael

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