配置gradle jetty插件以使用ssl

时间:2013-09-20 13:43:03

标签: ssl jetty gradle

我一直在尝试使用gradle jetty插件设置ssl但没有成功。另外,我找不到与之相关的文档也没有成功。那里有人能指出我正确的方向吗?

修改

作为搜索的一部分,我发现了以下示例

jettyRun {
    def httpConnector = new org.mortbay.jetty.nio.SelectChannelConnector();
    httpConnector.port = 8080
    def httpsConnector = new org.mortbay.jetty.security.SslSocketConnector();
    httpsConnector.port = 8443
    httpsConnector.keystore = "keystore.jks"
    httpsConnector.keyPassword = "keystorepwd"
    httpsConnector.truststore = "cacerts"
    httpsConnector.trustPassword = "cacertspwd"
    connectors [httpConnector, httpsConnector]
}

但是在那个样本之后,给我留下了以下问题......

unable to resolve class org.mortbay.jetty.nio.SelectChannelConnector 
unable to resolve class org.mortbay.jetty.security.SslSocketConnector

我是否必须在构建过程中添加一些依赖项。我看了jar文件作为我的gradle发行版的一部分,一切看起来都是正确的。

编辑2

我通过添加以下

修复了类路径的问题
buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'org.mortbay.jetty:jetty:6.1.25'
    }
}

但现在请注意以下消息:

Cannot cast object 'SelectChannelConnector@0.0.0.0:8080' with class 'org.mortbay.jetty.nio.SelectChannelConnector' to class 'org.mortbay.jetty.Connector'

如果有人似乎找到了答案我会非常感激!

3 个答案:

答案 0 :(得分:4)

使用Gretty gradle plugin代替Jetty插件,可以大大简化gradle脚本的SSL / HTTPS部分。

它支持使用单行指令的HTTPS:

gretty.httpsEnabled = true

它还提供了许多其他有用的功能,所有功能都记录在Gretty documentation site

披露:我是Gretty插件的作者。

答案 1 :(得分:1)

我找到了解决方案而不是将jar作为依赖项导入我只需在类加载器上为jettyRun任务加载类。类似于以下内容

 httpConnector = jettyRun.class.classLoader.loadClass(....).newInstance()

答案 2 :(得分:0)

目前Jetty插件不提供任何SSL功能。如果您没有绑定Jetty,则可以使用Tomcat plugin来代替SSL。