![](/img/trans.png)
[英]Cannot add subproject to gradle buildscript classpath in 7.3
[英]How to add gradle subproject source dir to a configuration/classpath
我需要將子項目的源路徑添加到用於通過 JavaExec 任務運行 GWT 代碼服務器的 Gradle 配置。
無論沒有添加任何內容或構建失敗,我所有的嘗試都會失敗。 我對 Gradle 很陌生,似乎我錯過了一些關鍵步驟。
以下是配置的創建和使用方式:
configurations {
gwtCodeServer
}
task runCodeServer(type: JavaExec) {
classpath = configurations.gwtCodeServer
doFirst {
classpath.each { println it}
// prints correct path in brackets: [C:/fullpath_to_subproject/src/main/java]
println files( project(':subproject.name').sourceSets.main.java.srcDirs ).files
}
}
這是我填充配置的方式:
dependencies {
gwtCodeServer files(project.sourceSets.main.java.srcDirs) // OK
gwtCodeServer files(project.sourceSets.main.resources.srcDirs) // OK
gwtCodeServer files('C:/opt/gwt-2.9.0/gwt-codeserver.jar') // OK
// OK (according to println classpath) but only for hardcoded path
gwtCodeServer files('C:/fullpath_to_subproject/src/main/java')
// KO - adds nothing according to println classpath above
gwtCodeServer files(project(':subproject.name').sourceSets.main.java.srcDirs)
// KO FAILS with 'Cannot convert the provided notation to an object of type Dependency'
// even when println shows correct path (probably via .toString())
gwtCodeServer files(project(':subproject.name').sourceSets.main.java.srcDirs).files
}
我找到了原因:
在我的項目配置中,子項目在計算主項目的依賴關系后初始化,在接下來的步驟中。
因此,在dependencies {}
塊中, project(':subproject.name').sourceSets.main.java.srcDirs
返回與主項目project.sourceSets.main.java.srcDirs
相同的路徑
在runCodeServer.doFirst
中,子項目已經初始化,因此其源路徑已正確打印在那里。
因此,我將不得不在runCodeServer.doFirst
閉包中添加所有子項目源目錄,而不是dependency {}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.