将类路径添加到在 Maven 集成测试中运行的码头
Posted
技术标签:
【中文标题】将类路径添加到在 Maven 集成测试中运行的码头【英文标题】:Adding classpath to jetty running in maven integration-test 【发布时间】:2011-01-11 16:12:30 【问题描述】:我正在尝试为生成 war 文件的 Maven 项目设置集成测试。 (如此处http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin/ 所见。)但是,我的war 文件需要类路径上的一堆.properties 文件,我不想将它们捆绑在war 中。
有没有办法(最好通过插件配置)将文件夹添加到码头使用的类路径?
我在谷歌上搜索并找到了http://markmail.org/message/awtqrgxxttra3uxx,但据我所知,这实际上根本不起作用。未找到 .properties 文件。
【问题讨论】:
【参考方案1】:您可以将您的附加配置文件放在/src/test/resources
下,并在插件配置中设置属性<useTestScope>true</useTestScope>
指定here:
使用TestScope
如果为 true,则来自 testClassesDirectory 的类和范围“test”的依赖项首先放在类路径中。默认情况下这是错误的。
【讨论】:
哦,已经有一条带有相同链接的评论...我会留下答案 - 它更引人注目。 对我不起作用。 Jetty 启动输出:[INFO] --- jetty-maven-plugin:9.3.7.v20160115:start (start-jetty) @ someapp --- [INFO] 为项目配置 Jetty:Verizon CHC Timer Server [INFO]未设置 webAppSourceDirectory。尝试 src/main/webapp [INFO] Reload Mechanic: automatic [INFO] Classes = /Users/mvmn/wrkdir/someapp/target/classes 2016-03-01 15:27:55.704:INFO::main: 日志记录已初始化 @4023ms [INFO] 上下文路径 = / [INFO] Tmp 目录 = /Users/mvmn/wrkdir/someapp/target/tmp [INFO] Web 默认值 = org/eclipse/jetty/webapp/webdefault.xml [INFO] Web 覆盖 = none 。 .. 对我也不起作用。编辑:适用于版本 >= 7.0.0【参考方案2】:如果您发现上述解决方案不适合您,请考虑将测试类路径包含到您的 Jetty 配置中。
<configuration>
<useTestClasspath>true</useTestClasspath>
...
</configuration>
这将允许您将所有方式的资源/类放在测试类路径上,并使它们对 Jetty 服务器可见,而不会潜入生产代码。
【讨论】:
如果版本 7+ 的用户来寻找答案,则新选项名称为<useTestScope>
。更多wiki.eclipse.org/Jetty/Feature/…【参考方案3】:
这应该可以使用webAppConfig
配置元素(下面的示例取自this thread):
<webAppConfig>
<contextPath>/nportal</contextPath>
<!-- All I want to do here is add in the /etc/jetty/classes for runtime files. For some reason I have to also add back in the /target/classes directory -->
<extraClasspath>$basedir/target/classes/;$basedir/etc/jetty/classes/</extraClasspath>
</webAppConfig>
【讨论】:
另一种可能更边缘化的方式是使用<contextXml>jetty-context.xml</contextXml>
,其中jetty-context.xml
配置<Set name="extraClasspath>../my/classes,../my/jars/special.jar</Set>
,参见Using the extraClasspath() method。以上是关于将类路径添加到在 Maven 集成测试中运行的码头的主要内容,如果未能解决你的问题,请参考以下文章
Maven - POM:如何使码头端口可变,以便以后可以检索?