我一直在尝试使用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'
如果有人似乎找到了答案我会非常感激!
答案 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。