2016-02-22 16 views
5

Ứng dụng của tôi yêu cầu phải có một thư mục \config trên đường dẫn lớp khi tìm kiếm các tệp cấu hình trong thư mục. Tôi hiện đang có phụ thuộc cấu hình như vậy, mặc dù điều này có lẽ không phải là cách đúng để tạo ra một thư mục có sẵn cho ứng dụng của tôi:Gradle - thêm thư mục vào classpath

dependencies { 
    ... //runtime, compile dependencies pulled from repositories 
    runtime files('config') 
} 

Tôi đang sử dụng plugin application để tạo ra một zip độc lập cho dự án của tôi. Nếu thư mục \config tôi có \config\subdir, file1, file2, sau đó các plugin tạo ra một thư mục build\install với cấu trúc sau:

| build 
| --|install 
| ----|bin 
| ------ projectName 
| ------ projectName.bat 
| ----|lib 
| ------ dependency1.jar 
| ------ dependency2.jar 
| ------|subdir 
| ------ file1 
| ------ file2 

này không làm việc cho các ứng dụng của tôi, vì nó rõ ràng hy vọng một thư mục \config

Tuy nhiên, đây là cấu trúc thư mục mà tôi cần:

| build 
| --|install 
| ----|bin 
| ------ projectName 
| ------ projectName.bat 
| ----|lib 
| ------ dependency1.jar 
| ------ dependency2.jar 
| ----|config 
| ------|subdir 
| ------ file1 
| ------ file2 

Tôi làm cách nào để thêm một thư mục khác vào bản dựng d chỉ định nó như là một phần của classpath cho các kịch bản khởi động được tạo ra?

+0

Thư mục cấu hình của bạn ở đâu trong thư mục nguồn? Nếu nó nằm trong 'src/main/resources', tôi sẽ tưởng tượng plugin ứng dụng sẽ đóng gói nó là – RaGe

+0

Nó không nằm trong thư mục nguồn. Nó nằm trong thư mục gốc của dự án. Nó có nên được di chuyển không? –

+0

Bạn thêm nó vào classpath như thế nào? Có, tôi đề nghị chuyển nó đến/src/dist như tôi đã đăng bên dưới. – RaGe

Trả lời

4

Việc áp dụng Plugin documentation nói:

file tĩnh để được thêm vào sự phân bố có thể chỉ cần thêm vào src/quận

tôi sẽ cố gắng đưa thư mục config của bạn vào src/dist/lib và tiếp tục thêm nó đến đường dẫn lớp học của bạn với runtime files('src/dist/lib/config')

Lưu ý: làm việc xung quanh this defect có nghĩa là cấu hình đó phải đi vào /lib dưới src/dist

+0

Tôi đã thử phương pháp này. Bây giờ tôi có thể nhận được cấu trúc thư mục thứ hai mà tôi đã mô tả trong câu hỏi của mình, nhưng classpath vẫn không chính xác trong các kịch bản được tạo ra. Nó định nghĩa classpath là 'set CLASSPATH =% APP_HOME% \ lib \ config' khi nó phải là' set CLASSPATH =% APP_HOME% \ config'. Làm thế nào tôi có thể đạt được điều này? –

+0

Nếu tôi định cấu hình kịch bản được tạo theo cách thủ công thành 'đặt CLASSPATH =% APP_HOME% \ config', ứng dụng của tôi hoạt động chính xác nhưng điều này chắc chắn không lý tưởng. Tôi không cần phải chỉnh sửa đầu ra xây dựng, phải không? –

+2

Sigh, có vẻ như bạn đang chạy vào đây: https://issues.gradle.org/browse/GRADLE-2991 và không, bạn không cần phải chỉnh sửa bất kỳ tập lệnh nào bằng tay sau khi xây dựng. Cách giải quyết đơn giản nhất mà tôi có thể nghĩ là đặt thư mục cấu hình của bạn trong '/ src/dist/lib' – RaGe

0

Bạn có thể thử này:

project('project-name') { 
    apply plugin: 'application' 
    mainClassName = "your.main.Class" 

    startScripts { 
     classpath += files('src/dist/lib/conf') 
    } 

thông tin có thể tìm thêm here.

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