代码之家  ›  专栏  ›  技术社区  ›  rwallace

Gradle build在WSL上什么都不做

  •  0
  • rwallace  · 技术社区  · 4 年前

    我正在编写一个Kotlin程序,并按照该语言的惯例使用Gradle作为构建系统。我通常在Windows上工作,但现在是时候开始在Linux上进行测试了,所以使用WSL。安装了Gradle,在WSL中克隆了我的代码副本。。。

    (base) a@DESKTOP-4B7M920:~/ayane$ gradle -version
    WARNING: An illegal reflective access operation has occurred
    WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/usr/share/java/groovy-all.jar) to method java.lang.Object.finalize()
    WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
    WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
    WARNING: All illegal access operations will be denied in a future release
    
    ------------------------------------------------------------
    Gradle 4.4.1
    ------------------------------------------------------------
    
    Build time:   2012-12-21 00:00:00 UTC
    Revision:     none
    
    Groovy:       2.4.16
    Ant:          Apache Ant(TM) version 1.10.5 compiled on March 28 2019
    JVM:          11.0.7 (Ubuntu 11.0.7+10-post-Ubuntu-2ubuntu218.04)
    

    到目前为止,情况很好,有时会出现这种警告,但似乎并不预示着会立即出现麻烦。

    这是我的构建文件,适用于Windows:

    (base) a@DESKTOP-4B7M920:~/ayane$ cat build.gradle.kts
    plugins {
        kotlin("jvm") version "1.3.72"
    }
    
    repositories {
        jcenter()
    }
    
    dependencies {
        implementation(kotlin("stdlib"))
        testImplementation("org.junit.jupiter:junit-jupiter:5.6.2")
    }
    
    tasks.test {
        useJUnitPlatform()
        testLogging {
            events("passed", "skipped", "failed")
        }
    }
    

    来吧。

    (base) a@DESKTOP-4B7M920:~/ayane$ gradle build
    
    > Task :buildEnvironment
    
    ------------------------------------------------------------
    Root project
    ------------------------------------------------------------
    
    classpath
    No dependencies
    
    
    BUILD SUCCESSFUL in 0s
    1 actionable task: 1 executed
    <-------------> 0% WAITING
    

    嗯?我能理解它是否因为某些先决条件或其他不可用而抛出错误。但没有错误,什么都没有?发生什么事?

    0 回复  |  直到 4 年前
        1
  •  3
  •   Bjørn Vester    4 年前

    您目前使用的是Gradle的Kotlin插件的最新版本(1.3.72)。但是,您使用的是Gradle的旧版本(4.4.1)。正如你可以从 Kotlin documentation :

    Kotlin Gradle插件1.3.72适用于Gradle 4.9及更高版本。

    不幸的是,插件没有检查这一点,并给出更正确的错误消息,而不是默默地什么都不做。如果你愿意,我想你可以在这方面为Jetbrains制造一个问题。

    正如在对您的问题的评论中提到的那样,我也强烈建议使用 wrapper 。它确保项目是使用您(构建作者)决定的特定Gradle声明版本构建的。否则,您必须记录如何正确设置环境,包括要安装哪个版本的Gradle。

    Java也是如此:一定要清楚地记录所需或支持的版本。

    至于在WSL中构建,我遇到的唯一问题是远程构建缓存不工作。这是因为我将Git配置为使用POSIX行尾(LF)签出源文件,而缓存是在Windows计算机上使用CRLF行尾填充的)。听起来你并没有在使用这个功能,但除此之外,在WSL中,一切对我来说都很好。