使用 tomee-maven-plugin 部署 web 应用程序时,应用程序托管的有效 URL 结果为:
http://localhost:8080/[artifactId]-[version]/
我想任意设置该相对路径,例如:
http://localhost:8080/myservice/
tomee-maven-plugin 中的哪个配置参数可以做到这一点?
感谢您的快速帮助和最好的问候
帕斯卡
使用 tomee-maven-plugin 部署 web 应用程序时,应用程序托管的有效 URL 结果为:
http://localhost:8080/[artifactId]-[version]/
我想任意设置该相对路径,例如:
http://localhost:8080/myservice/
tomee-maven-plugin 中的哪个配置参数可以做到这一点?
感谢您的快速帮助和最好的问候
帕斯卡
您可能会获得该上下文路径,因为它是 warfile 工件的名称。
您可以finalName
在 pomfile 中设置:
<build>
<finalName>myservice</finalName>
[ all other configuration ... ]
</build>
这将产生一个myservice.war
文件。如果您只想使用不同的上下文路径而没有不同命名的工件,您可以在插件配置中指定它
<plugin>
<groupId>org.apache.openejb.maven</groupId>
<artifactId>tomee-maven-plugin</artifactId>
<version>1.0.1</version>
<configuration>
<finalName>myservice</finalName>
<warFile>point this to your warfile</warFile>
</configuration>
</plugin>
或者,您可以尝试将 a 添加META-INF/context.xml
到您的工件中,其中包含:
<Context path="/myservice" />
Guido 的虚假回答(有 3 个赞成票!)浪费了我很多时间。它充满了不好的建议。
回应 Guido 的三条建议:
<build>
”——这不是一个好建议。您丢失了您的工件的版本信息,并且重命名您的战争以使部署插件满意,这完全是bass-ackwards。<finalName>
标签”——这要么是过时的信息,要么是公然的错误信息。无论哪种方式,它 - 以及插件文档的缺乏 - 花费了我大量的时间。真正的答案见下文。META-INF/context.xml
” - 这在技术上是正确的,但半无用的建议。根据Tomcat/Tomee的apache 文档:当主机执行操作
autoDeploy
或deployOnStartup
操作时,Web 应用程序的名称和上下文路径源自定义 Web 应用程序的文件的名称。因此,上下文路径可能不会在META-INF/context.xml
如果 Guido 删除他的答案,以上所有内容都可以删除。
要在 tomee-maven-plugin 中指定 Web 应用程序的上下文路径:
<configuration>
...
<context>${artifactId}</context>
...
</configuration>
例如,这将部署myapp-1.0.0-SNAPSHOT
为/myapp
.
此外,当我在咆哮时,我不妨让世界变得更美好并添加我学到的其他内容,因为tomee-maven-plugin 的主页几乎不包含有关可用配置选项的信息......
-X
,它会打印出当前 XML 配置的 XML 块。(例如“mvn tomee:run -X
并寻找<configuration>
”)。tomcat-maven-plugin
到tomee-maven-plugin
,则不能使用任何现有配置。把它扔掉。首先,有一个未记录的“类路径”标签可能对您有用:
<classpaths>
<classpath>${someClasspath}</classpath>
</classpaths>
其次,您可以使用一个未记录的systemVariables
标签(或者您可以使用<args>
)来指定您的密钥库和信任库。它在下面看起来很明显,但实际上没有其他地方告诉你 tomee-maven-plugin 期望什么,并且还有相当多的错误信息(例如,conf 中的任何 JKS 都将被自动加载),所以这就是实际工作的方法:
<systemVariables>
<javax.net.ssl.trustStore>${some.path}/truststore.jks</javax.net.ssl.trustStore>
<javax.net.ssl.trustStorePassword>somePassword</javax.net.ssl.trustStorePassword>
<javax.net.ssl.keyStore>${some.path}/keystore.pkcs12</javax.net.ssl.Store>
<javax.net.ssl.keyStorePassword>somePassword</javax.net.ssl.keyStorePassword>
<javax.net.ssl.keyStoreType>someType (e.g. PKCS12)</javax.net.ssl.keyStoreType>
</systemVariables>
希望有一天这对某人有所帮助。:-)