我正在使用Jetty的Maven插件,版本7.0.0.pre5,但是我在配置它以使用SSL连接器时遇到了问题。每当我启动应用程序时,它都会失败,说明找不到请求的实现。
这是我的pom.xml中的插件配置
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>7.0.0.pre5</version>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8080</port>
</connector>
<connector implementation="org.mortbay.jetty.ssl.SslSelectChannelConnector">
<port>8443</port>
<keystore>src/test/resources/server.keystore</keystore>
<keyPassword>123456</keyPassword>
<password>123456</password>
</connector>
</connectors>
</configuration>
</plugin>
尝试使用mvn jetty运行它:run提供以下输出:
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to configure plugin parameters for: org.mortbay.jetty:jetty-maven-plugin:7.0.0.pre5
Cause: Class name which was explicitly given in configuration using 'implementation' attribute: 'org.mortbay.jetty.ssl.SslSelectChannelConnector' cannot be loaded
使用org.mortbay.jetty.ssl.SslSocketConnector呈现相同的结果。
这真的很奇怪,因为根据Jetty自己的文档,两个类都存在并且这是它们的正确名称(在Jetty 6中注意使用了包安全性而不是ssl)。
欢迎任何想法。
答案 0 :(得分:15)
对于当前版本的jetty-maven-plugin 8.0.0.M2,类名已被移动到org.eclipse。*中,并且不需要其他依赖项。
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.0.0.M2</version>
<configuration>
<webAppConfig>
<contextPath>/</contextPath>
</webAppConfig>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8080</port>
</connector>
<connector implementation="org.eclipse.jetty.server.ssl.SslSocketConnector">
<port>8443</port>
<keystore>src/test/resources/server.keystore</keystore>
<keyPassword>123456</keyPassword>
<password>123456</password>
</connector>
</connectors>
</configuration>
</plugin>
请参阅:http://wiki.eclipse.org/Jetty/Starting/Porting_to_Jetty_7
答案 1 :(得分:8)
不确定这是否正常但是jetty-maven-plugin在其pom中没有jetty-ssl
作为依赖。所以请像这样更新你的pom:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>7.0.0.pre5</version>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8080</port>
</connector>
<connector implementation="org.mortbay.jetty.ssl.SslSelectChannelConnector">
<port>8443</port>
<keystore>src/test/resources/server.keystore</keystore>
<keyPassword>123456</keyPassword>
<password>123456</password>
</connector>
</connectors>
</configuration>
<dependencies>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-ssl</artifactId>
<version>7.0.0.pre5</version>
</dependency>
</dependencies>
</plugin>
该插件将成功加载org.mortbay.jetty.ssl.SslSelectChannelConnector
。
答案 2 :(得分:3)
对于使用Jetty 6.x的任何人来说,插件依赖项中包含的工件是jetty-sslengine
。
答案 3 :(得分:0)
实际上与Pascal Thivent的回答一样,结合了gnuf答案,但有效的一个(版本6.1.26)。
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8080</port>
</connector>
<connector implementation="org.mortbay.jetty.security.SslSelectChannelConnector">
<port>8443</port>
<keystore>server.keystore</keystore>
<keyPassword>password</keyPassword>
</connector>
</connectors>
</configuration>
<dependencies>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-sslengine</artifactId>
<version>6.1.26</version>
</dependency>
</dependencies>
</plugin>