Gradle 在运行任务时设置了错误的(意外的?)类路径

我的项目结构是这样的:


projectRoot

  +-src

     +-main

     |   +-java

     |   |   +-package/java files go here

     |   +-resources

     |       +-config

     |           +-files go here

     +-test

         +-java

         |   +-package/java files go here

         +-resources

             +-config

             |   +-files go here

             +-features

                 +-files go here

构建此项目时,它会生成以下输出结构:


projectRoot

  +-out

      +-production

      |     +-classes

      |     |   +-package/classes in here

      |     +-resources

      |         +-config

      |             +-files in here

      +-test

            +-classes

            |   +-package/classes in here

            +-resources

                +-config

                |   +-files in here

                +-features

                    +-files in here

这一切都在预料之中。我定义了一个运行黄瓜测试的任务,它看起来像这样:


task runCucumber() {

    doLast {

        javaexec {

            main = "cucumber.api.cli.Main"

            args += ['--plugin', 'pretty', '--plugin', 'html:out/reports/cucumber/', '--plugin', 'json:out/reports/cucumber/report.json',

                     '--glue', 'com.example.mypackage.cucumber', 'classpath:features'

                     , '--tags', 'not @ignore']

            systemProperties['http.keepAlive'] = 'false'

            systemProperties['http.maxRedirects'] = '20'

            systemProperties['env'] = System.getProperty("env")

            systemProperties['envType'] = System.getProperty("envType")

            classpath = configurations.cucumber + configurations.compile + configurations.testCompile + sourceSets.main.runtimeClasspath + sourceSets.test.runtimeClasspath

        }

    }

}

当我执行此任务时,找不到我的类,也找不到功能。显然,这是由于未正确设置类路径。如果我使用 运行任务--info,我可以看到类路径是使用我指示的参数设置的,但是out它包含build目录而不是目录。



素胚勾勒不出你
浏览 142回答 1
1回答

暮色呼如

好吧,原来问题不在于 Gradle,而在于 IntelliJ IDEA。IDEA 覆盖了标准的 gradle 路径,并将输出保存在与 gradle 预期不同的路径中。然后,当下一个 gradle 任务运行时,输出不在那里。直接使用gradle而不是IDEA编译解决了这个问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java