說明
The project must target Java 17 (LTS). Code using deprecated or removed APIs from older Java versions must be migrated.
為什麼重要
- Security — Java 11 reached end of public updates
- LTS support — Java 17 is the current long-term support release
- Language features — records, sealed classes, pattern matching improve code quality
Enforcement
Rules targeting deprecated Java APIs:
- java:S1311 — Classes should not be overloaded with too many methods
- Custom rules for removed APIs (e.g., javax.annotation → jakarta.annotation)
mvn rewrite:dryRun -DactiveRecipe=org.openrewrite.java.migrate.UpgradeToJava17
Remediation
# Apply the migration recipe
mvn rewrite:run -DactiveRecipe=org.openrewrite.java.migrate.UpgradeToJava17
OpenRewrite will automatically:
- Replace javax.* imports with jakarta.*
- Convert anonymous classes to lambdas where applicable
- Update deprecated API usage
正例
// Java 17 features
public record OrderDto(Long id, String name, List<Item> items) {}
sealed permits OrderCreated, OrderCancelled {}
var result = switch (status) {
case CREATED -> "pending";
case DELIVERED -> "complete";
default -> "unknown";
};
反例
// ❌ Pre-Java 17 patterns
public class OrderDto {
private Long id;
private String name;
// 20+ lines of boilerplate getters/setters/constructor/equals/hashCode
}