【问题标题】:TomEE Maven plugin: Deployment pathTomEE Maven 插件:部署路径
【发布时间】:2013-06-07 14:46:24
【问题描述】:

使用 tomee-maven-plugin 部署 webapp 时,应用程序托管在结果上的有效 URL:

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

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

http://localhost:8080/myservice/

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

感谢您的快速帮助和最好的问候

帕斯卡

【问题讨论】:

    标签: maven apache-tomee


    【解决方案1】:

    您可能会获得该上下文路径,因为它是 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" />
    

    【讨论】:

    • 感谢您的意见!我尝试使用“-Dtomee-plugin.finalName=codenation-service”运行 maven,但它没有更改生成的部署 URL。
    • 但是“context.xml”的事情已经奏效了:-)。虽然我更喜欢参数选项。
    • 参数变化不大。将 ${your.property} 放入上下文路径并将资源配置为已过滤。或者直接把属性放在 pomfile finalName 中,并将值作为参数传递。一般来说,顺便说一句,我建议不要过于依赖参数并为这类东西使用配置文件。
    • 谢谢,伙计,那行得通。我最终使用了过滤后的资源版本。
    • ${project.build.directory}/${project.build.finalName} 添加到配置中
    【解决方案2】:

    Guido 的虚假回答(有 3 个赞成票!)浪费了我很多时间。里面充满了不好的建议。

    回应 Guido 的三条建议:

    • “在&lt;build&gt; 标签中设置warfile 名称” - 这不是一个好建议。您丢失了您的工件的版本信息,并且重命名您的战争以使部署插件满意完全是低级的。
    • "&lt;finalName&gt; tag" - 这是过时的信息或公然的错误信息。无论哪种方式,它 - 以及插件文档的缺乏 - 花费了我大量的时间。真正的答案见下文。
    • “在我们的工件中创建一个META-INF/context.xml” - 这在技术上是正确的,但半无用的建议。根据 Tomcat/Tomee 的 apache documentation

    当主机执行autoDeploydeployOnStartup 操作时,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's homepage 几乎不包含有关可用配置选项的信息...

    • 尝试使用-X 运行,它会打印出当前XML 配置的XML 块。 (例如“mvn tomee:run -X 并查找“&lt;configuration&gt;”)。
    • 如果您要从 tomcat-maven-plugin 转换到 tomee-maven-plugin,则不能使用任何现有配置。扔掉它。
    • The author of the tomee-maven-plugin 仅在随机博客文章中提供文档,因此如果您有问题或更好地浏览所有 OpenEJB 源代码,请查看那里。呜呜呜……
    • 如果您使用的是 SSL 证书,那么关于启动和运行所需的信息也很少:

    首先,有一个未记录的“类路径”标签可能对您有用:

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

    其次,您可以使用未记录的systemVariables 标签(或者您可以使用&lt;args&gt;)来指定您的密钥库和信任库。它在下面看起来很明显,但实际上没有其他地方告诉你 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>
    

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

    【讨论】:

      猜你喜欢
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 2020-11-27
      • 2019-01-26
      • 2014-06-07
      相关资源
      最近更新 更多