Tôi muốn thay thế vài dòng trong tệp Config.java trước khi mã được biên dịch. Tất cả những gì tôi có thể tìm được là phân tích tập tin thông qua bộ lọc trong khi sao chép nó. Ngay sau khi tôi phải sao chép nó, tôi phải lưu nó ở đâu đó - đó là lý do tại sao tôi đi giải pháp: sao chép vào vị trí tạm thời trong khi thay thế dòng> xóa tập tin gốc> sao chép tập tin trùng lặp trở lại vị trí ban đầu> xóa tập tin tạm thời. Có giải pháp tốt hơn không?Tác vụ Gradle thay thế chuỗi trong tập tin .java
Trả lời
Có thể bạn nên thử một cái gì đó giống như con kiến của replaceregexp:
task myCopy << {
ant.replaceregexp(match:'aaa', replace:'bbb', flags:'g', byline:true) {
fileset(dir: 'src/main/java/android/app/cfg', includes: 'TestingConfigCopy.java')
}
}
Nhiệm vụ này sẽ thay thế tất cả các lần xuất hiện của aaa
với bbb
. Dù sao, nó chỉ là một ví dụ, bạn có thể sửa đổi nó theo mục đích của bạn hoặc thử một số giải pháp tương tự với kiến.
- Tôi chắc chắn sẽ không ghi đè lên file gốc
- Tôi muốn giữ cho mọi thứ thư mục dựa chứ không phải là tên tập tin dựa vì vậy nếu nó đã được tôi, tôi muốn đưa Config.java trong thư mục riêng của nó (ví dụ
src/replaceme/java
) - Tôi muốn tạo một thư mục
generated-src
dưới$buildDir
để nó bị xóa qua nhiệm vụclean
.
Bạn có thể sử dụng tác vụ Sao chép và bộ lọc ReplaceTokens. Ví dụ:
apply plugin: 'java'
task generateSources(type: Copy) {
from 'src/replaceme/java'
into "$buildDir/generated-src"
filter(ReplaceTokens, tokens: [
'xxx': 'aaa',
'yyy': 'bbb'
])
}
// the following lines are important to wire the task in with the compileJava task
compileJava.source "$buildDir/generated-src"
compileJava.dependsOn generateSources
Tôi đã sử dụng phương pháp thay thế và hoạt động của nó hoàn hảo nhưng sau khi tôi chỉnh sửa tệp Config.java theo cách thủ công, tôi có thể tiếp cận một số tệp không mong muốn tiểu bang, vì vậy giải pháp của bạn có vẻ tốt hơn nhiều. Chính xác compileJava.source = [tệp] làm gì? Làm cách nào để biết liệu tôi có muốn thay thế Config.java trong cho phép nói gói 'com.example.cfg' chứ không phải tệp có cùng tên trong gói 'com.example.remote.cfg' không? – Srneczek
Như tôi đã nói, tôi thích sử dụng các thư mục hơn là các mẫu tên tập tin cụ thể. Vì vậy, trong ví dụ của tôi tất cả mọi thứ trong 'src/replaceme/java' sẽ được thay thế bất kể gói. 'compileJava.source generateSources.outputs.files' gọi [JavaCompile.source (...)] (https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/compile/JavaCompile.html) mà cuối cùng thêm các nguồn được tạo ra để chúng được biên dịch cùng với các tệp nguồn bình thường (trong 'src/main/java'). Không có dấu "=" trong đề xuất của tôi –
Để bổ sung cho lance-java
's câu trả lời, tôi thấy thành ngữ này đơn giản hơn nếu chỉ có một giá trị mà bạn đang tìm kiếm để thay đổi:
task generateSources(type: Copy) {
from 'src/replaceme/java'
into "$buildDir/generated-src"
filter { line -> line.replaceAll('xxx', 'aaa') }
}
- 1. Java .Class thay đổi tập tin chuỗi
- 2. tác vụ runJar gradle?
- 3. Tác vụ Gradle - chuyển đối số tới ứng dụng Java
- 4. Thực hiện SQL trong tác vụ Gradle?
- 5. Thay chuỗi trong nội dung tập tin
- 6. Làm thế nào để thay thế văn bản trong các tập tin sử dụng Gradle/Groovy chức năng
- 7. Làm thế nào để thực hiện một tác vụ bên ngoài gradle (Exec) trong nền?
- 8. Làm thế nào để thực thi JavaExec nhiều lần trong một tác vụ bằng Gradle?
- 9. thay đổi tên tập tin apk trong gradle không thành công với gradle: 3.0.0-alpha4
- 10. Làm thế nào để gỡ lỗi các tập tin và nhiệm vụ gradle studio android?
- 11. Đặt javaagent cho tác vụ cụ thể trong Gradle
- 12. tác vụ nền java
- 13. Làm thế nào để chơi tập tin 3gp trong Java?
- 14. Gradle: Thay thế Tokens bằng cách tìm mã thông báo từ tập tin bất động sản
- 15. Lập lịch tác vụ trong Spring/Java
- 16. Cách thay đổi nhiệm vụ cài đặt Gradle
- 17. Chuỗi thay thế trong chuỗi con
- 18. Sao chép tập tin vào rootDir trong Gradle
- 19. Thay thế chuỗi ký tự trong java
- 20. Gradle loại trừ tập tin từ sourceSet không làm việc
- 21. Thêm phụ thuộc nhiệm vụ vào Tác vụ Plugin hiện có trong Gradle?
- 22. Gradle Android - Ghi đè các tác vụ chuẩn
- 23. Thay thế Chuỗi Gradle - không có phần giữ chỗ
- 24. thay thế tập tin crontab bằng -e
- 25. Thao tác chuỗi truy vấn trong Java
- 26. hủy tác vụ trong tương lai trong java
- 27. thay thế Chuỗi bằng một chuỗi khác trong java
- 28. Rake nhiệm vụ trong các tập tin khác
- 29. thay thế hàng loạt các chuỗi trong tập tin văn bản duy nhất (Notepad ++)
- 30. biểu Scala để thay thế một phần mở rộng tập tin trong một chuỗi
Xem aproach khác tại địa chỉ: [http: // stackoverflow.com/a/17572644/890357](http://stackoverflow.com/a/17572644/890357) – marciowb