取得进展
VMware 提供培训和认证,助您加速前进。
了解更多SpringSource Tool Suite (STS) 提供了“新建 Spring 模板项目”向导。使用此向导,用户可以看到许多项目模板,选择一个,然后让向导根据该模板描述创建一个完整的项目。虽然这提供了一种创建新项目的简便方法,但您可能希望为您的团队或组织定义自己的自定义项目模板。接下来我们将展示如何做到这一点。
因此,第一步是创建一个新的空插件项目。您不需要 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 默认模板可用,并添加了我自己的 URL 到我的(在本例中是本地的)descriptor.xml
文件。因此,如果您只想使用本地文件,可以采用这种方法。如果您想在公司内部分发新的模板,将 descriptor.xml
文件作为 http 资源提供会很有意义。请注意,URL 之间用 \n
分隔。
现在您基本上完成了 STS 的新插件。您可以将其导出,并将生成的 JAR 文件放入 STS 安装的 dropins
目录中。请确保 build.properties 中勾选了 META-INF、OSGI-INF 和 plugin.xml
,以便包含在二进制构建中。
(我为此附上了一个示例插件项目:template-contribution-plugin.zip)
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。请选择
org.test.mynewtemplate
)side
属性中设置正确的 ZIP 文件大小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
相同的模板 id
、name
和 description
,以及相同的 version
和 kind template
。除此之外,它还包含对 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
的根目录中,并包含
就是这样!
请注意: 一旦您将新模板的 zip 文件下载到 STS 中(在您从列表中选择并按下回车键后会自动完成),STS 下次将重复使用已下载的文件。因此,如果您更改模板,请注意设置更新的版本号。否则,STS 将不会使用您更改的版本。