【问题标题】:Error while replacing jetty plugin to gretty plugin gradle将jetty插件替换为gretty插件gradle时出错
【发布时间】:2018-10-11 16:40:25
【问题描述】:

我有一个 JAX-RS 项目,它在 gradle 中有码头插件。我想用 gretty 替换 jetty 插件,因为 gradle 4 和其他版本不支持 jetty。运行 gretty 插件时出现以下错误。

任务“:appRunWar”执行失败。

java.lang.Exception: com/sun/jersey/spi/inject/InjectableProvider

包含码头插件的build.gradle代码

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'jetty'
apply plugin: 'eclipse'
jettyRun {
    httpPort = 8080
    reload = 'automatic'
    scanIntervalSeconds = 2
    daemon = false
}
//other things....

用 gretty 替换 jetty 的 build.gradle 代码

apply plugin: 'java'
apply plugin: 'war'
apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'
apply plugin: 'eclipse' 
gretty {
    httpPort = 8080
    //contextPath = '/'
    servletContainer = 'jetty9'
    httpEnabled = true
}
//other things...

【问题讨论】:

    标签: java gradle jetty gradle-plugin gretty


    【解决方案1】:

    首先,不要使用Akhikhl's gretty,因为它不再维护,并且在某些码头版本中显示出困难,例如。码头94和码头93。此外,不支持 Java 版本 9 和 10。 相反,您应该依赖gretty-gradle-plugin,它是一个直接维护的分支:

    plugins {
        id 'java'
        id 'war'
        id 'eclipse'
        id 'org.gretty' version '2.1.0'
    }
    
    gretty {
        //contextPath = '/'
    }
    
    //other things...
    

    你为 gretty 提供的配置是默认配置,你可以去掉它。
    ServerConfig.groovy 中的默认配置如下所示:

    static ServerConfig getDefaultServerConfig(String serverName) {
        ServerConfig result = new ServerConfig()
        result.jvmArgs = []
        result.servletContainer = 'jetty9'
        result.managedClassReload = false
        result.httpEnabled = true
        result.httpsEnabled = false
        result.interactiveMode = 'stopOnKeyPress'
        result.scanInterval = 1
        result.loggingLevel = 'INFO'
        result.consoleLogEnabled = true
        result.fileLogEnabled = true
        result.logFileName = serverName
        result.redeployMode = 'restart'
        result.logDir = "${System.getProperty('user.home')}/logs" as String
        result.scanner = 'jetty'
        result.portPropertiesFileName = 'gretty_ports.properties'
        result.liveReloadEnabled = false
        return result
    }
    

    请注意,gretty-gradle-plugin 可以在 'org.gretty' 找到,而 Akhikhl 的 gretty 位于 'org.akhikhl.gretty'。如果您的错误仍然存​​在,请提供完整的堆栈跟踪并相应地更新您的答案。

    【讨论】:

    • @ThadeuAntonioFerreiraMelo 请向我们展示您的配置
    猜你喜欢
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    相关资源
    最近更新 更多