67.1.2扣除“抓住”坐标
Spring Boot通过允许您指定没有组或版本的依赖项(例如, @Grab('freemarker') )来扩展Groovy的标准 @Grab 支持。这样做可以参考
Spring Boot的默认依赖关系元数据来推断工件的组和版本。
默认元数据与您使用的CLI版本相关联。只有当您移动到新版本的CLI时,它才会更改,让您可以控制依赖项版本何时更改。可以在
附录中找到显示默认元数据中包含的依赖关系及其版本的表。
67.1.3默认导入语句
为了帮助减小Groovy代码的大小,自动包含多个 import 语句。请注意前面的示例如何引用 @Component , @RestController
和 @RequestMapping ,而无需使用完全限定名称或 import 语句。
许多Spring注释在不使用 import 语句的情况下工作。尝试运行应用程序以在添加导入之前查看失败的内容。
67.1.4自动主方法
与等效的Java应用程序不同,您不需要在 Groovy 脚本中包含 public static void main(String[] args) 方法。自动创
建 SpringApplication ,编译的代码充当 source 。
67.1.5自定义依赖关系管理
默认情况下,CLI在解析 @Grab 依赖项时使用 spring-boot-dependencies 中声明的依赖关系管理。可以使用 @DependencyManagementBom 注
释配置覆盖默认依赖关系管理的其他依赖关系管理。注释的值应指定一个或多个Maven BOM的坐标( groupId:artifactId:version )。
例如,请考虑以下声明:
@DependencyManagementBom("com.example.custom-bom:1.0.0")
前面的声明在 com/example/custom-versions/1.0.0/ 下的Maven存储库中获取 custom-bom-1.0.0.pom 。
指定多个BOM时,它们将按您声明的顺序应用,如以下示例所示:
@DependencyManagementBom(["com.example.custom-bom:1.0.0",
"com.example.another-bom:1.0.0"])
上面的示例表明 another-bom 中的依赖关系管理会覆盖 custom-bom 中的依赖关系管理。
您可以在任何可以使用 @Grab 的地方使用 @DependencyManagementBom 。但是,为了确保依赖关系管理的一致排序,您最多可以在应用程序中
使用 @DependencyManagementBom 。一个有用的依赖关系管理源(它是Spring Boot的依赖关系管理的超集)是 Spring IO平台,您可以在其中
包含以下行:
@DependencyManagementBom('io.spring.platform:platform-bom:1.1.2.RELEASE')
67.2具有多个源文件的应用程序
您可以对所有接受文件输入的命令使用“shell globbing”。这样做可以让您使用单个目录中的多个文件,如以下示例所示:
$ spring run *.groovy
67.3打包您的应用程序
您可以使用 jar 命令将应用程序打包到一个自包含的可执行jar文件中,如以下示例所示:
$ spring jar my-app.jar *.groovy
生成的jar包含通过编译应用程序和所有应用程序的依赖项生成的类,以便可以使用 java -jar 运行它。jar文件还包含应用程序类路径中的条
目。您可以使用 --include 和 --exclude 添加和删除jar的显式路径。两者都以逗号分隔,并且都以“ ”和“ - ”的形式接受前缀,以表示它
们应该从默认值中删除。默认包括如下:
public/**, resources/**, static/**, templates/**, META-INF/**, *
默认排除如下:
.*, repository/**, build/**, target/**, **/*.jar, **/*.groovy
在命令行上键入 spring help jar 以获取更多信息。