在搖籃文檔它指出了java-library plugin:搖籃的Java庫插件相比,Java插件
Java庫插件通過提供有關Java庫的具體知識擴展了Java插件的功能。特別是,Java庫向消費者公開API(即,使用Java或Java庫插件的其他項目)
此聲明暗示只有意圖被使用的Java程序(庫)應該使用java-library
插件;而不意味着被消費的Java程序(應用程序)應該使用java
插件。
此前使用java-library
插件根build.gradle
文件可能包含以下內容:
subprojects {
apply plugin: 'java'
sourceCompatibility '1.8'
targetCompatibility '1.8'
// other common java stuff
}
但是現在在多模塊項目具有您不能委派插件選擇的子項目,並有兩個應用程序和庫下面根build.gradle
:
subprojects {
sourceCompatibility '1.8'
targetCompatibility '1.8'
// other common java stuff
}
因爲sourceCompatibility
和targetCompatibility
由定義這將失敗和java-library
插件。理想情況下,我想做到以下幾點:
subprojects {
apply plugin: 'java-library'
sourceCompatibility '1.8'
targetCompatibility '1.8'
// other common java stuff
}
是否有任何理由強制執行的Java應用程序使用java
插件和Java庫使用java-library
插件?是否有任何理由使用java
插件而不是java-library
插件?
編輯
爲了進一步澄清我的問題,在搖籃樣品中存在的與java
插件here併爲java-library
插件here一個多模塊項目。在java
插件的示例中,root build.grade使用apply plugin: 'java'
。 java-library
插件的根build.gradle不使用任何插件。該應用程序項目使用apply plugin: 'java'
;而核心和utils項目使用apply plugin: 'java-library'
。
我的問題是爲什麼一些項目使用java
插件,其他人使用java-library
插件?它似乎使它更難以不違反DRY原則。我很難僅指定sourceCompatibility
和targetCompatibility
一次。我可以想出幾種方法來指定這些屬性,但最簡單的解決方案似乎是對所有項目都使用java-library
。
將java
插件用於某些子項目並將java-library
插件用於其他項目有什麼好處嗎?
這很有趣我以前沒見過'withPlugin'或'withId'方法。這絕對回答了我可以在應用之前配置插件的方式。然而,這是否比爲應用程序和庫使用'java-library'插件更好? – DragonAssassin