在 Maven 項目中,在編輯 pom.xml 的時候,需要定義一個屬性,并用這個屬性來替換一些有價值的工件版本的實例。
出于這些目的,IntelliJ IDEA 提供了提取屬性重構。
提取屬性重構在指定的 pom.xml 文件中創建一個新的屬性定義 ,在 pom. xml 文件的層次結構中查找所選字符串的所有匹配項,并用上述格式的屬性替換它們: ${}
"提取屬性重構" 允許您將表達式和本地聲明移動到屬性。
示例-1:
這個例子中,工件版本被替換為在同一個pom.xml文件中聲明的屬性:
重構前:
submodule
重構后:
${submodule}
submodule
示例-2:
這個例子中,pom.xml文件中的工件版本被替換為在其父pom.xml文件中聲明的屬性:
重構前:
HelloWorld
1.0
submodule
重構后:
Parent:
HelloWorld
...
${submodule}
...
submodule
Child:
HelloWorld
1.0
${submodule}
在 pom.xml 文件中提取屬性
⒈ 打開所需的pom.xml文件進行編輯,并將插入符號放在要替換的值的某個位置。(你也可以選擇一個特定的子字符串;在這種情況下,重構將應用于所選內容。)
⒉ 按 Ctrl+Alt+V,或在上下文菜單上選擇:重構| 提取| 屬性(或在主菜單上)。請注意,所選內容將自動擴展到封閉標記。
⒊ 在 "提取屬性" 對話框中,請執行以下操作:
① 在 "名稱" 字段中,指定要分配給新屬性的名稱。IntelliJ IDEA 建議了一些合適的名字。您可以從下拉列表中選擇一個,或者手動輸入所需的名稱。
② 在 "項目" 下拉列表中,選擇將在其中聲明新屬性的項目。
點擊“確定”。
⒋ 后續的工作流程取決于特定的pom.xml文件重構被調用。
① 重構被調用的事件將被默默地替換。如果該字符串出現多次,則將為這些事件顯示 "替換使用率" 對話框。您必須指定是否要替換每個匹配項。
② 如果該pom.xml是一個父文件,并且將在其中聲明新屬性,則 IntelliJ IDEA 將無提示地替換父文件中的值,并在 "查找" 工具窗口中顯示其他實例。您必須指定是否要替換每個匹配項。
③ 如果pom.xml從父文件繼承,IntelliJ IDEA 會以靜默方式替換子文件中的事件。此更改不傳播給父級pom.xml。
在每種情況下,IntelliJ IDEA 將新的屬性聲明添加到指定的pom.xml文件。