Maven - POM:如何使码头端口可变,以便以后可以检索?
Posted
技术标签:
【中文标题】Maven - POM:如何使码头端口可变,以便以后可以检索?【英文标题】:Maven - POM: How to make the jetty port changeable so that it can be retrieved later? 【发布时间】:2011-03-21 01:15:23 【问题描述】:我正在开发一个集成测试套件,我有一个问题要问你。
我的父 pom 定义了 jetty 插件的使用,其目标是:run-war。我需要通过命令行更改码头监听的端口。例如,这可以通过传递 -Djetty.port=8099 来实现。
在子项目中,我需要使用此端口号为一些 SOAP 测试配置端点,这些测试需要在 jetty 托管的服务上运行。
如果我在端点配置中的子 pom 中使用 $jetty.port,如果我在调用 maven 时明确传递 -Djetty.port,则此方法可以正常工作。
在我的孩子 pom 中:
<endpoint>http://127.0.0.1:$jetty.port/artifactId<endpoint>
我需要在 jetty.port 中填写 8080,如果 -Djetty.port 未显式传递,这是 jetty 默认的值,并且如果指定了命令行参数,仍会捕获任何其他端口值。
【问题讨论】:
【参考方案1】:使用属性部分,并添加一个带有默认值的 jetty.port 属性:
<properties>
<jetty.port>8080</jetty.port>
</properties>
【讨论】:
谢谢。这并不太难 :-) 一旦计时器用完,我就会接受这篇文章作为答案。 是的 - 它对我也不起作用。我可以在命令行中执行 -Djetty.port=8080,但是将jetty.http.port
,它不再有效。
到目前为止,只有 export MAVEN_OPTS="-Djetty.port=9999" 对我有用【参考方案2】:
配置 maven 码头插件:
<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>
如果要使用较新版本的 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>
会做的伎俩,与 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>
查看 'mvn jetty:run' 之后的日志,最后应该显示如下内容: 2013-09-05 09:49:05.047:INFO:oejs.ServerConnector:main: 已启动 ServerConnector@a6e9cb4HTTP/1.10.0.0.0:8085
此版本的插件需要使用 maven 3 和 java 7。
【讨论】:
以上是关于Maven - POM:如何使码头端口可变,以便以后可以检索?的主要内容,如果未能解决你的问题,请参考以下文章
使用 jetty-maven-plugin 运行 Jetty,并在 jetty 运行时完成构建
如何使用 pom.xml 将参数传递给 Maven 构建? [复制]