SpringSource Tool Suite 中的自定義專案模板

工程 | Martin Lippert | 2011 年 2 月 24 日 | ...

SpringSource Tool Suite (STS) 提供了“新建 Spring 模板專案”嚮導。使用者可以使用此嚮導檢視多個專案模板,選擇一個,然後讓嚮導根據該模板描述建立一個完整的專案。雖然這提供了一種建立新專案的便捷方式,但您可能希望為您的團隊或組織定義自己的自定義專案模板。接下來我們將演示如何做到這一點。

1. 步驟:向 STS 貢獻新的資源擴充套件

STS 透過下載和讀取資源 XML 檔案來建立可用專案模板的列表。要讓 STS 知道這些資原始檔的位置,您需要透過擴充套件將其貢獻給 STS。

因此,第一步是建立一個新的空外掛專案。您不需要 Java 程式碼,所以不要將其建立為 Java 專案。只需建立一個新的外掛專案,在嚮導中取消選擇 Java 選項即可。

現在在該外掛專案中定義擴充套件。透過在開啟清單編輯器時(雙擊 META-INF/MANIFEST.MF)選擇“擴充套件”選項卡來建立一個 plugin.xml。您可以透過修改 plugin.xml 來定義擴充套件,使其看起來像這樣:


<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>

<plugin>
   <extension point="com.springsource.sts.core.resources">
      <url
         id="content.descriptors"
         value="%content.descriptor.urls">
      </url>
   </extension>

</plugin>

這定義了對 STS 擴充套件點 com.springsource.sts.core.resources 的貢獻,並使用您的新值覆蓋 content.descriptors ID 的預設值。這個新值應包含您希望在 STS 嚮導中看到的所有模板的所有 URL。在這種情況下,我們不會直接在此處放置 URL,而是將其外部化到一個單獨的屬性檔案中。*這是必需的*,用於多個 URL,您將看到。

下一步是建立一個名為 bundle.properties 的屬性檔案,將其放在外掛的 OSGI-INF/I10n/ 目錄中。此屬性檔案應如下所示:


content.descriptor.urls = http://dist.springsource.com/release...riptors.xml\n\
file:///Users/mlippert/template-contribution/descriptor.xml

正如您所見,我在這裡放置了原始 STS 值,以保留 STS 的預設模板,並添加了我自己的(在此情況下是本地的)descriptor.xml 檔案的 URL。因此,如果您只想使用本地檔案,可以繼續採用這種方法。如果您想將新模板分發給整個公司,讓 descriptor.xml 檔案作為 HTTP 資源提供將很有意義。請注意,URL 由 \n 分隔。

現在,您已經完成了 STS 新外掛的大部分工作。您可以匯出該外掛,然後將生成的 JAR 檔案放入 STS 安裝的 dropins 目錄中。請注意,build.properties 已勾選 META-INF、OSGI-INF 和 plugin.xml 以包含在二進位制構建中。

(我附上了此示例的外掛專案:template-contribution-plugin.zip

2. 步驟:構建 descriptor.xml 檔案

您在上一步中新增到 STS 擴充套件的 URL 指向一個 descriptor.xml 檔案。該檔案應如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<descriptors>
   <descriptor id="org.test.mynewtemplate" kind="template" local="false" name="Mein neues Template" size="998877" url="file:///Users/mlippert/template-contribution/test-template-1.0.0.zip" version="1.0.0">
      <description>My brand new template contribution for this hacky stuff etc.</description>
   </descriptor>
</descriptors>

正如您所見,我在此處放置了一些隨機的無意義示例,您應該將其替換為您自己的 ID。請選擇:

  • 為您自己的模板 ID(示例中為 org.test.mynewtemplate
  • 為您自己的模板名稱(“Mein neues Template”),這將顯示在嚮導列表中
  • 您自己的 URL,指向模板的 ZIP 檔案
  • 不要忘記在 side 屬性中設定 ZIP 檔案的正確大小
  • description:更多文字,告知使用者您的模板是關於什麼的

3. 步驟:構建實際的模板

現在您需要建立我們在 descriptor.xml 檔案中引用的 ZIP 檔案。此 ZIP 檔案應在其根目錄中包含三個檔案:
  • template.xml
  • template.zip
  • wizard.json

讓我們來看第一個,template.xml


<template>
   <descriptor id="org.test.mynewtemplate"
             name="Mein neues Template"
             kind="template"
             version="1.0.0">
      <description>My brand new template contribution for this hacky stuff</description>
   </descriptor>
   <project path="template.zip"/>
   <json path="wizard.json"/>
</template>

它包含與 descriptor.xml 相同的模板 idnamedescription,以及相同的 versiontemplate 型別。此外,它還包含對 template.zip 檔案和 wizard.json 檔案的引用。因此,這是您定義這兩個其他檔案的地方。

wizard.json 檔案包含用於建立和處理此特定模板的嚮導 UI 的描述。在我的示例中,wizard.json 檔案如下所示:


{
   "info" : {
      "elements" : {
         "element" : [
         {
            "name" : "topLevelPackage",
            "description" : "Please specify the top-level package e.g. com.mycompany.myapp",
            "type" : "java.lang.String",
            "page" : 0,
            "required" : true,
            "pattern" : "\\w+\\.\\w+(\\.\\w+)+",
            "replaceKind" : "topLevelPackage"
         }
         ]
      },

      "topLevelPackage" : "mytld.mycompany.myapp.mysubsystem",
      "projectName" : "projectName",

      "pages" : {
         "page" : [
         {
            "order" : 0,
            "description" : "Project Settings"
         }
         ]
      }
   }
}

我在這裡不深入細節,但這基本上是嚮導 UI 的資訊。它包含使用者可以在嚮導中輸入的元素,這些元素用於建立實際專案(例如,頂層包)。

最後一部分是使用者選擇您的模板時希望例項化的實際專案。您所要做的就是自己建立專案,並按照 wizard.json 中定義的名稱來命名頂層包(在本例中為 mytld.mycompany.myapp.mysubsystem)。在我附加的示例中,模板專案位於名為 template 的根目錄中,包含:

  • .classpath
  • .project
  • .settings
  • .springBeans
  • pom.xml
  • 包含專案佈局和一些預定義原始碼的 src 目錄
這裡有一個示例:template-contribution.zip

就這樣!

請注意:一旦您將新模板的 zip 檔案下載到 STS(這是在您從列表中選擇並按 Enter 鍵後自動完成的),STS 將在下次重用下載的檔案。因此,如果您更改模板,請務必為其設定一個新版本號。否則,STS 將不會採用您更改後的模板。

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有