spring_reference/VIII. Build tool plugins/59.9. Understanding how the...

23 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### 59.9. 理解Gradle插件是如何工作的
当`spring-boot`被应用到你的Gradle项目一个默认的名叫`bootRepackage`的任务被自动创建。`bootRepackage`任务依赖于Gradle `assemble`任务当执行时它会尝试找到所有限定符为空的jar artifacts也就是说tests和sources jars被自动跳过
由于`bootRepackage`查找'所有'创建jar artifacts的事实Gradle任务执行的顺序就非常重要了。多数项目只创建一个单一的jar文件所以通常这不是一个问题。然而如果你正打算创建一个更复杂的使用自定义`jar`和`BootRepackage`任务的项目setup有几个方面需要考虑。
如果'仅仅'从项目创建自定义jar文件你可以简单地禁用默认的`jar`和`bootRepackage`任务:
```gradle
jar.enabled = false
bootRepackage.enabled = false
```
另一个选项是指示默认的`bootRepackage`任务只能使用一个默认的`jar`任务:
```gradle
bootRepackage.withJarTask = jar
```
如果你有一个默认的项目setup在该项目中mainjar文件被创建和重新打包。并且你仍旧想创建额外的自定义jars你可以将自定义的repackage任务结合起来然后使用`dependsOn`,这样`bootJars`任务就会在默认的`bootRepackage`任务执行以后运行:
```gradle
task bootJars
bootJars.dependsOn = [clientBoot1,clientBoot2,clientBoot3]
build.dependsOn(bootJars)
```
上面所有方面经常用于避免一个已经创建的boot jar又被重新打包的情况。重新打包一个存在的boot jar不是什么大问题但你可能会发现它包含不必要的依赖。