2017-09-01 149 views
0

我在我的build.gradle.kts中有以下gradle任務。它應該從我的JPA實體生成文件。但是,在運行此任務時,一旦成功,將不會生成文件或目錄。JOOQ與Gradle和Kotlin不生成文件

task(name = "generateJooq") { 
    doLast { 
     val configuration = Configuration().apply { 

      generator = Generator().apply { 
       database = Database().apply { 
        name = "org.jooq.util.jpa.JPADatabase" 
        properties = listOf(Property().apply { 
         key = "packages" 
         value = "com.example.sample" 
        }) 
       } 

       target = Target().apply { 
        packageName = "com.example.jooq" 
        directory = "src/generated/java" 
       } 
      } 
     } 

     GenerationTool.generate(configuration) 
    } 
} 

這是我的實體生活在包com.example.sample。請注意,我用Java編寫了這個實體。

@Entity 
public class Book { 

    @Id 
    private String id; 

    @Column 
    private String title; 
} 

有以下日誌

./gradlew clean generateJooq  

BUILD SUCCESSFUL in 1s 
2 actionable tasks: 2 executed 
+0

可能類似於https://stackoverflow.com/a/43008349/521799 –

回答

1

我猜你Book類是src/main/java正確的?

現在你想讓這個類可用於JOOQ對不對?在編譯src/main/java之前定義了Gradle buildscript classloader(它加載gradle任務)時出現了一些雞或egg問題。

您需要將自定義類加載器傳遞給JOOQ(例如URLClassloader)。 JOOQ然後可以使用類加載器來加載類(希望JOOQ API的支持)。您可以使用sourceSets.main.runtimeClasspath創建一個URL的數組。

我看到GenerationTool有一個setClassLoader(..)方法here。我猜你會打電話給

查看here對於類似的解決方案(使用Reflections而不是JOOQ,但基本相同)。

+0

可能就是這樣。 [這裏是使用Maven的類似問題](https://stackoverflow.com/a/43008349/521799) –