如何使用jetty.port覆盖jetty.xml

Gon*_*alo 11 java jetty embedded-jetty maven maven-jetty-plugin

我正在使用maven-jetty-plugin并尝试使用-Djetty.port = 8090覆盖我的jetty.xml设置,但它不起作用.只有当我从jetty.xml文件中删除连接器部分时,才会将端口设置为8090.

所以:

 mvn jetty:run -Djetty.port=8090
Run Code Online (Sandbox Code Playgroud)

连接器从端口8080开始

没有连接器在端口8090中启动

问题是我需要配置接受器,统计和其他东西.我尝试只从连接器中删除端口,但它不起作用.

我正在使用:

JAVA 1.7_05
MAVEN 3.0.4
Jetty 8.1.4
Linux Ubuntu 12.04 64bits
Run Code Online (Sandbox Code Playgroud)

这是我的pom.xml插件配置:

<plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>8.1.4.v20120524</version>
            <configuration>
                <stopKey>foo</stopKey>
                <stopPort>9990</stopPort>
                <jettyXml>src/main/webapp/WEB-INF/jetty.xml</jettyXml>
            </configuration>
            <executions>
                <execution>
                    <id>start-jetty</id>
                    <!-- <phase>pre-integration-test</phase> -->
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <scanIntervalSeconds>0</scanIntervalSeconds>
                    </configuration>
                </execution>
                <execution>
                    <id>stop-jetty</id>
                    <!-- <phase>post-integration-test</phase> -->
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
            </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

Jetty.xml连接器conf:

<Call name="addConnector">
  <Arg>
      <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
        <Set name="host"><Property name="jetty.host" /></Set>
        <Set name="port"><Property name="jetty.port" default="8080"/></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>
Run Code Online (Sandbox Code Playgroud)

提前致谢!

更新1:还尝试在jetty.xml中使用SystemProperty而不是Property.不工作

Gon*_*alo 7

更新1:做了工作.不知道为什么,但我尝试使用主机也作为SystemProperty,它工作.然后我删除了主机并且也工作了.

所以最终修复工作jetty.xml连接器conf:

<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="8080"/></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>
Run Code Online (Sandbox Code Playgroud)

  • 对于Jetty 9,请参阅:http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/plain/jetty-server/src/main/config/etc/jetty-http.xml (4认同)

Rob*_*bAu 6

我有同样的问题.固定:

在pom的属性部分中,定义jetty.port:

<properties>
    <jetty.port>8888</jetty.port>
            ....
</properties>
Run Code Online (Sandbox Code Playgroud)

在插件配置中:

<connectors>
    <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
        <maxIdleTime>3600000</maxIdleTime>
        <port>${jetty.port}</port>
    </connector>
Run Code Online (Sandbox Code Playgroud)

这样就可以在命令行上覆盖端口

mvn -D jetty.port=9999 jetty:run
Run Code Online (Sandbox Code Playgroud)

  • 这种方式对我来说不适用于Jetty 9.设置端口不受尊重.系统属性确实有效.见其他评论. (2认同)
  • 是的,我无法相信他们从Jetty 9那里拿出了那个.看起来是时候降级了! (2认同)