簡體   English   中英

如何將 gradle 子項目源目錄添加到配置/類路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM