本文說明如何自訂 GitHub Copilot 應用程式現代化所產生的 Java 專案升級計劃。
當您起始升級工作階段時,GitHub Copilot 會產生一個 plan.md 檔案,其中概述了升級所需的步驟和工作。 此檔案可作為升級過程的藍圖,您可以自訂該檔案以更好地滿足專案的需求。
工具產生 plan.md 檔案之後,它會自動在 Visual Studio Code 編輯器中開啟。 在此階段,您可以檢閱和自訂計劃,以確保其符合您的特定升級目標。
plan.md 範例檔案結構
下列各節說明範例 plan.md 檔案結構,以說明自訂點。
索引鍵參數
以下章節描述了你可以修改的計畫中關鍵參數。
建構工具指令選項
此選項位於 「專案資訊」下,可讓您定義建構工具執行的自訂命令列參數。 如需有效的選項,請參閱 Maven CLI 或 Gradle CLI 文件,視您的專案而定。
範例:
對於 Maven:
Build tool command options: -Dmaven.javadoc.skip=true -s "/path/to/custom/settings.xml"對於 Gradle:
Build tool command options: --info -Penv=production
備註
視需要將路徑取代為實際 settings 檔案位置。 顯示的此路徑只是一個範例。
測試驗證
位於「 其他工作 」區段下,您可以透過修改 run tests before and after the upgrade 旗標來啟用或停用測試執行。
- 設定為
true在升級前後啟用單元測試。 - 設定為
false略過測試驗證。
此設定可控制工具是否執行單元測試,以在升級期間驗證功能正確性。
透過調整這些設置,您可以微調升級過程以更好地滿足您的專案要求。
自訂升級目標並提供指引
在 Java 升級情境中,通常需要自訂化,超越標準的 JDK 或框架升級——例如,套用專案專屬的程式碼變更,或更新工具無法自動偵測的內部函式庫。 為了支援這些需求,GitHub Copilot 應用程式現代化現在支援升級計畫內的自訂功能。 此功能讓您能自行提供食譜、說明與輸入,以指導升級流程。 你可以透過修改 升級目標 和 指引 章節來進行這種自訂。
升級目標部分
在 升級目標 區塊中,你現在可以在初始提示中指定更多升級目標。 例如,如果主要任務是將專案從 Java 17 升級到 Java 21,但專案同時需要將 Log4j 從 1.x 升級到 2.x,你可以將此列為額外目標,如下範例提示所示:
## Upgrade Goals
- Upgrade from Java 17 to 21
- Upgrade org.apache.logging.log4j:* to 2.24.3
- Upgrade org.internal.lib to 2.0
指引章節
指引部分定義了 Copilot 應該如何執行升級。 升級目標部分著重於需要升級的內容,而指引部分則涵蓋了引導 Copilot 在程式碼轉換過程中行為的方法論、慣例、工具與規則。
你可以包含任何有助於引導 Copilot 修改程式碼的指示,例如以下說明:
- 提供關於該使用哪些工具、配方或框架進行程式碼變更的指引。
- 對某些升級方法的限制或禁令。
- 程式碼風格或慣例要求。
- 連結到代理可存取的內部檔案、文件或腳本。
- 領域知識有助於修正錯誤或進行升級。
- 代理人應如何註釋或評論程式碼變更的要求。
- 升級過程中產生的臨時產物清理說明。
此區內容可為純文字、超連結或本地檔案參考,只要 Copilot 能存取即可。
範例:
## Guidelines
- Do not use Log4j 1 to Log4J 2 API bridge to upgrade to Log4J 2.
- Please follow the code conventions defined in /xxx/bbb/rules.txt.
- Please provide detailed comments explaining why each code change is necessary.
- "com.example:internal-lib:2.0.0" is compatible with Java 21.
- Use our internal MCP tool get_internal_lib_knowledge to retrieve compatibility information for internal libraries.
- After the upgrade, please remove any temporary files created during the process, such as code modification scripts.