没有方法签名:静态org.akhikhl.gretty.ProjectUtils.getClassPath()

时间:2018-07-18 14:31:06

标签: gradle java-ee intellij-idea gretty

我正在尝试将Javaee项目从ant迁移到gradle。我的最终目标是能够通过gradle在码头上运行该项目。我想为此使用gretty插件。我在Intellij IDEA CE 2018.1中使用默认的gradle包装器

当我启动gretty的appStart任务时,出现错误:

Caused by: groovy.lang.MissingMethodException: No signature of method: static org.akhikhl.gretty.ProjectUtils.getClassPath() is applicable for argument types: (org.gradle.api.internal.project.DefaultProject_Decorated, null, java.lang.String) values: [project ':myProject', null, runtime]

我的项目目录结构与gradle期望的默认目录结构不同。我检查了灰色的源代码,并且异常来自;

gretty / libs / gretty / src / main / groovy / org / akhikhl / gretty / StartBaseTask.groovy:212

resolvedClassPath.addAll(ProjectUtils.getClassPath(proj, wconfig.inplace, runtimeConfig))

wconfig.inplace部分返回null。我认为我需要在build.gradle文件中进行设置,但是我不知道它是什么。我文件的内容:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.akhikhl.gretty:gretty:+'
    }
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'ear'
apply plugin: 'org.akhikhl.gretty'

repositories {
    jcenter()

    flatDir {
        dirs '../Libs'
    }
}

sourceSets {
    main {
        java {
            srcDirs = ["src"]
        }

        resources {
            srcDir 'WebContent/resources'
        }
    }


    test{
        java {
            srcDirs=["test"]
        }
    }
}

dependencies {
    compile 'javax.servlet:javax.servlet-api:3.1.0'

    testCompile 'junit:junit:4.12'

    compile 'junit:junit:4.12'
    // more dependencies...
}


gretty {
    httpPort = 8080
    contextPath = '/myProject'
    servletContainer = 'jetty9'
    webAppDirName = '/WebContent'
}

我该如何解决?

预先感谢

1 个答案:

答案 0 :(得分:0)

可能的Gretty错误。尝试将inplace = false添加到配置中作为解决方法:

gretty {
  servletContainer = 'jetty9.4'
  httpPort = 8080
  inplace = false
}