[英]Gradle and Shadow plugin - copy additional files (.jar files) to final jar after shadowJar task
問題描述:
我正在使用 Gradle Shade 插件,一切正常,並將資源文件復制到最終的 jar。 但是,正如文檔所說,它不能包含其他.jar
文件作為資源,因為它無法將它們與依賴項區分開來。 它不是解壓它們。
我想做什么:
我想將tools
文件夾( build.gradle
我的build.gradle
)中的額外.jar
文件復制到shadowJar
任務生成的最終jar
。
問題:
如何擴展任務 ( shadowJar
) 以將其他文件復制到生成的 jar 文件中。
這在 Gradle shadow 插件的文檔中, Embedding Jar Files Inside Your Shadow Jar部分中得到了回答:
[...] shadow 無法區分配置為依賴項的 jar 文件和包含在資源文件夾中的 jar 文件。 這意味着在資源目錄中找到的任何 jar 都將與任何其他依賴項一樣合並到影子 jar 中。 如果您打算將 jar 嵌入其中,則必須在影子任務開始之前將 jar 重命名為不以 .jar 結尾。
不幸的是,這既適用於作為依賴項配置一部分的 JAR,也適用於使用from
copy spec 復制 JAR(由於shadowJar
任務擴展了jar
任務,因此它起作用;這反過來又是一個復制任務,因此支持復制規范)。
因此,只能通過重命名來嵌入 JAR。 如果它必須在 Uber JAR 中命名為.jar
,我認為唯一的選擇是三步解決方法:
*.zip
。shadowJar
{
from("${dirThatContainsSomeJARs}")
{
include '*.jar'
rename '(.+).jar', '$1.zip'
}
}
*.zip
JAR 重命名回*.jar
。jar
或zip
任務重新jar
所有內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.