Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 Maven-POM:如何使jetty端口可变,以便以后可以检索它?_Maven 2_Jetty_Pom.xml - Fatal编程技术网

Maven 2 Maven-POM:如何使jetty端口可变,以便以后可以检索它?

Maven 2 Maven-POM:如何使jetty端口可变,以便以后可以检索它?,maven-2,jetty,pom.xml,Maven 2,Jetty,Pom.xml,我正在开发一个集成测试套件,我有一个问题要问你 我的父pom定义了jetty插件的使用,目标是:运行war。我需要通过命令行更改jetty侦听的端口。例如,这可以通过传递-Djetty.port=8099来实现 在子项目中,我需要使用此端口号为一些SOAP测试配置端点,这些测试需要在jetty托管的服务上运行 如果我在端点配置中的子pom中使用${jetty.port},当且仅当我在调用maven时显式传递-Djetty.port时,这就可以了 在我的孩子pom中: <endpoint>

我正在开发一个集成测试套件,我有一个问题要问你

我的父pom定义了jetty插件的使用,目标是:运行war。我需要通过命令行更改jetty侦听的端口。例如,这可以通过传递-Djetty.port=8099来实现

在子项目中,我需要使用此端口号为一些SOAP测试配置端点,这些测试需要在jetty托管的服务上运行

如果我在端点配置中的子pom中使用${jetty.port},当且仅当我在调用maven时显式传递-Djetty.port时,这就可以了

在我的孩子pom中:


<endpoint>http://127.0.0.1:${jetty.port}/{artifactId}<endpoint>

http://127.0.0.1:${jetty.port}/{artifactId}

我需要用8080填充jetty.port,如果未显式传递-Djetty.port,则jetty默认使用8080,并且如果指定了命令行参数,则仍会捕获任何其他端口值。

使用属性部分,并添加一个具有默认值的jetty.port属性:

<properties>
  <jetty.port>8080</jetty.port>
</properties>

8080

配置maven jetty插件:

    <plugins>

        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1H.14.1</version>
            <configuration>
                <connectors>
                    <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                        <port>8085</port>
                        <maxIdleTime>60000</maxIdleTime>
                    </connector>
                </connectors>
             </configuration>
        </plugin>
    </plugins>

org.mortbay.jetty
:

您可以在标准jetty xml配置文件中配置连接器,并将其位置放入jettyXml参数中。请注意,自jetty-9.0以来,无法再在pom.xml中直接配置https连接器:您需要使用jetty xml配置文件来完成此操作。
比如:


org.eclipse.jetty
jetty maven插件
9.0.5.v20130815
src/main/resources/jetty.xml
/yourCtxPath
我会做这个把戏的 jetty.xml文件内容:



30000

请参阅“mvn jetty:run”后面的日志,结尾处应显示如下内容:
2013-09-05 09:49:05.047:信息:oejs.ServerConnector:main:已启动ServerConnector@a6e9cb4{HTTP/1.1}{0.0.0.0:8085}


此版本的插件需要使用maven 3和java 7。

谢谢。这并不难:-)我会在计时器一用完就接受这篇文章作为回答。是的,它对我也不起作用。我可以在命令行中执行-Djetty.port=8080,但是输入pom不起作用。您也可以执行以下操作:export MAVEN_OPTS=“-Djetty.port=9999”此环境。变量消除了对命令行选项的需要。这是一个非常有用的答案,特别是因为文档目前在这方面不正确,错误地说属性应该是
jetty.http.port
,它不再工作。到目前为止,只有export MAVEN_OPTS=“-Djetty.port=9999”对我有效
    <plugin>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>9.0.5.v20130815</version>
        <configuration>
            <jettyXml>src/main/resources/jetty.xml</jettyXml>
            <webApp>
                <contextPath>/yourCtxPath</contextPath>
            </webApp>
        </configuration>
    </plugin>
<?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 id="httpsConnector" name="addConnector">
    <Arg>
      <New class="org.eclipse.jetty.server.ServerConnector">
        <Arg name="server"><Ref refid="Server" /></Arg>
          <Set name="host"><Property name="jetty.host" /></Set>
          <Set name="port"><Property name="jetty.port" default="8085" /></Set>
          <Set name="idleTimeout">30000</Set>
        </New>
    </Arg>
  </Call>

</Configure>