在 Gradle 版本 7.6 以上,Gradle 提供一種方法,可以在外掛中定義 Java 工具鏈自動配置邏輯。此頁面說明如何撰寫工具鏈解析器外掛。有關工具鏈自動配置如何與這些外掛互動的詳細資訊,請參閱 工具鏈。
提供下載 URI
對於下載 URL,只接受 https 等安全協定。此舉是為了確保無人能在傳輸過程中竄改下載內容。
|
外掛透過 JavaToolchainResolver 的實作提供對應邏輯
JavaToolchainResolverImplementation.java
public abstract class JavaToolchainResolverImplementation
implements JavaToolchainResolver { (1)
public Optional<JavaToolchainDownload> resolve(JavaToolchainRequest request) { (2)
return Optional.empty(); // custom mapping logic goes here instead
}
}
1 | 此類別為 abstract ,因為 JavaToolchainResolver 是 建置服務。Gradle 會在執行階段為某些抽象方法提供動態實作。 |
2 | 對應方法傳回包在 Optional 中的下載回應。如果解析器實作無法提供相符的工具鏈,封裝的 Optional 會包含一個空值。 |
在外掛中註冊解析器
使用設定外掛 (Plugin<Settings>
) 註冊 JavaToolchainResolver
實作
JavaToolchainResolverPlugin.java
public abstract class JavaToolchainResolverPlugin implements Plugin<Settings> { (1)
@Inject
protected abstract JavaToolchainResolverRegistry getToolchainResolverRegistry(); (2)
public void apply(Settings settings) {
settings.getPlugins().apply("jvm-toolchain-management"); (3)
JavaToolchainResolverRegistry registry = getToolchainResolverRegistry();
registry.register(JavaToolchainResolverImplementation.class);
}
}
1 | 此外掛程式使用屬性注入,因此它必須是abstract 和設定外掛程式。 |
2 | 若要註冊解析器實作,請使用屬性注入來存取JavaToolchainResolverRegistry Gradle 服務。 |
3 | 解析器外掛程式必須套用jvm-toolchain-management 基本外掛程式。這會動態將jvm 區塊新增至toolchainManagement ,這會讓註冊的工具鏈儲存庫可從建置中使用。 |