Jetty Maven插件无缘无故地忽略了我的jetty.xml

时间:2012-11-18 14:59:04

标签: maven-jetty-plugin

我对这款Jetty Maven插件感到有些沮丧..

我正在尝试使用jetty.xml文件配置jetty-maven-plugin。 ( 见下文 )。

我希望Jetty从8081端口开始。

然而,当我跑

时,我一直在控制台中获得8080
mvn jetty:run

我还希望看到日志打印

Configuring Jetty from xml configuration file

我在jetty-maven-plugin来源中找到了。但我在任何地方都看不到它。

我验证了所有文件都在正确的位置,到目前为止我尝试了很多配置变体。

我的Maven配置是:

...
<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
    <version>${jettyVersion}</version>
    <configuration>                       
           <jettyConfig>${project.basedir}/src/main/resources/jetty.xml</jettyConfig>
    </configuration>
</plugin>
.....
<properties>
    <jettyVersion>7.2.0.v20101020</jettyVersion>
</properties>

我的jetty.xml文件是:

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<Configure id="Server" class="org.eclipse.jetty.server.Server">
        <Call name="addConnector">
  <Arg>
      <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
        <Set name="host"><SystemProperty name="jetty.host" /></Set>
        <Set name="port"><SystemProperty name="jetty.port" default="8081"/></Set>
        <Set name="maxIdleTime">300000</Set>
        <Set name="Acceptors">4</Set>
        <Set name="statsOn">false</Set>
        <Set name="confidentialPort">8443</Set>
    <Set name="lowResourcesConnections">20000</Set>
    <Set name="lowResourcesMaxIdleTime">5000</Set>
      </New>
  </Arg>
</Call>
</Configure>

我几乎阅读了所有可能的资源,包括所有stackoverflow的Q&amp; A. 我肯定错过了什么。

尽管Eclipse将POM中jetty.xml的配置参数记录为“jettyXml” - 我下载了它们的源代码。它绝对是“jettyConfig”。

查看他们的代码,我看到以下

public void applyJettyXml() throws Exception
    {
        if (getJettyXmlFile() == null)
            return;

        getLog().info( "Configuring Jetty from xml configuration file = " + getJettyXmlFile() );        
        XmlConfiguration xmlConfiguration = new XmlConfiguration(getJettyXmlFile().toURL());
        xmlConfiguration.configure(this.server);   
    }

我正在为getter添加实现

public File getJettyXmlFile ()
{
    return this.jettyConfig;
}

所以我希望至少能看到打印Configuring Jetty from xml... - 但它看起来并不好......

我设法从命令行覆盖端口,但我对XML配置感兴趣。

3 个答案:

答案 0 :(得分:1)

jettyConfig重命名为webAppXml

答案 1 :(得分:0)

如果您仍在追求这一点,那么可以从http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin尝试两件事。

1)“你必须通过添加对jetty-servlets的依赖来明确启用Jetty扩展”

<plugin>
...
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-server</artifactId>
        <version>7.2.0.v20101020</version>
    </dependency>
</plugin>

2)如果你做了第1步,通过将它(org.mortbay.jetty,而不是org.eclipse.jetty)放入settings.xml来指示maven在正确的groupId上

<profile>
      ...
    <pluginGroups>
        <pluginGroup>org.mortbay.jetty</pluginGroup>
    </pluginGroups>
</profile>

答案 2 :(得分:0)

您应该尝试从

更改artifactid

<artifactId>maven-jetty-plugin</artifactId>

<artifactId>jetty-maven-plugin</artifactId>

因为您在jetty.xml中使用的类以带有jetty 7的org.eclipse.jetty为前缀