說明

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.annotationjakarta.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
}