TomEE Maven插件:部署路径

时间:2013-06-07 14:46:25

标签: maven apache-tomee

使用tomee-maven-plugin对webapp进行deplyoing时,应用程序托管的有效URL结果为:

http://localhost:8080/[artifactId]-[version]/

我想任意设置相对路径,例如:

http://localhost:8080/myservice/

tomee-maven-plugin中的哪个配置参数可以做到这一点?

感谢您的快速交流和最好的问候

帕斯卡

2 个答案:

答案 0 :(得分:4)

您可能获得该上下文路径,因为它是warfile工件的名称。

您可以在pomfile中设置finalName

 <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>

或者,您可以尝试向工件添加META-INF/context.xml,其中包含:

<Context path="/myservice" />

答案 1 :(得分:2)

Guido的虚假答案(有3个赞成!)浪费了我很多时间。它充满了糟糕的建议。

回应Guido的三条建议:

  • &#34;在<build>标记中设置warfile名称&#34; - 这不是一个好建议。你丢失了你的工件的版本信息,并重命名你的战争,使部署插件快乐完全是低音的。
  • &#34; <finalName>代码&#34; - 这是过时的信息或公然的错误信息。无论哪种方式,它 - 以及缺少插件的文档 - 都花费了我很多时间。请参阅下面的真实答案。
  • &#34;在我们的工件中创建META-INF/context.xml&#34; - 这是技术上真实但半无用的建议。根据Tomcat / Tomee的apache documentation
  

当主机执行autoDeploydeployOnStartup操作时,Web应用程序的名称和上下文路径是从定义的文件的名称派生的网络应用程序。因此,上下文路径可能未在META-INF/context.xml

中定义

如果Guido删除了他的答案,则可以删除以上所有内容。

在tomee-maven-plugin中指定Web应用程序的上下文路径:

<configuration>
...
    <context>${artifactId}</context>
...
</configuration>

例如,这会将myapp-1.0.0-SNAPSHOT部署为/myapp

此外,在我咆哮的同时,我也可以让世界变得更美好,并添加我学到的其他内容,因为tomee-maven-plugin's homepage几乎不包含有关可用配置选项的信息...

  • 尝试使用-X运行,它会打印出当前XML配置的XML块。 (例如&#34; mvn tomee:run -X并查找&#34; <configuration>&#34;)。
  • 如果您从tomcat-maven-plugin过渡到tomee-maven-plugin,则无法使用任何现有配置。扔掉它。
  • The author of the tomee-maven-plugin仅在随机博客文章中提供文档,因此如果您遇到问题或者甚至更好地浏览所有OpenEJB源代码,请查看。 Grrr ......
  • 如果您正在使用SSL证书,那么关于启动和运行所需的信息也很少:

首先,这是一个没有证件的&#34;类路径&#34;可能对您有用的标记:

<classpaths>
    <classpath>${someClasspath}</classpath>
</classpaths>

其次,您可以使用一个未记录的systemVariables标记(或者您可以使用<args>)来指定密钥库和信任库。下面看起来很明显,但是其他地方实际上并没有告诉你tomee-maven-plugin期望什么,并且还有相当多的错误信息(例如,conf中的任何JKS都会自动加载),所以这里&# 39; 实际上是什么工作

<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>

希望有一天这会帮助某人。 : - )