Maven - POM:如何使码头端口可以更改,以便以后检索?

Joh*_*ohn 8 maven-2 jetty pom.xml

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

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

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

如果我在我的子pom中使用$ {jetty.port}在端点配置中这可以正常工作,并且只有在我调用maven时显式传递-Djetty.port.

在我的孩子pom:


<endpoint>http://127.0.0.1:${jetty.port}/{artifactId}<endpoint>
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*anu 9

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

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

  • 你也可以这样做:导出MAVEN_OPTS =" - Djetty.port = 9999"这个环境.变量不需要命令行选项. (2认同)

gam*_*moz 8

配置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>
Run Code Online (Sandbox Code Playgroud)

如果您想使用较新版本的jetty插件,请使用以下配置:

来自http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html:

您可以在标准的jetty xml配置文件中配置连接器,并将其位置放入jettyXml参数中.请注意,由于jetty-9.0不再可以直接在pom.xml中配置https连接器:您需要使用jetty xml配置文件来执行此操作.
就像是:

    <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>
Run Code Online (Sandbox Code Playgroud)

使用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 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>
Run Code Online (Sandbox Code Playgroud)

请参阅'mvn jetty:run'后的日志,最后应显示如下内容:
2013-09-05 09:49:05.047:INFO:oejs.ServerConnector:main:已启动ServerConnector@a6e9cb4{HTTP/1.1}{0.0. 0.0:8085 }

您需要在此版本的插件中使用maven 3和java 7.