如何从父母pom''mvn jetty:run'?

时间:2013-04-16 02:58:40

标签: maven jetty

我有一个包含多个.war包的多模块项目。我希望能够在父pom上'mvn jetty:run',并将每个子模块的.wars部署在同一个嵌入式jetty实例上。

我能够从每个子模块成功运行'mvn jetty:run',但是当我在父pom上运行它时,它会失败并跳过子模块。

尝试从父pom运行'mvn jetty:run'会产生以下结果:

  

[错误]无法执行目标   org.mortbay.jetty:maven-jetty-plugin:6.1.16:run default-cli)on   project FlashCards_App:Webapp源目录C:\ dev \ sour   ce_code \ FlashCards_App \ src \ main \ webapp不存在 - > [帮助1]

父pom上没有webapp目录。

这是我的pom的摘录。完整文件可以是found here

<modules>
    <module>FlashCards_Domain</module>
    <module>FlashCards_GWT</module>
    <module>FlashCards_Service</module>
    <module>FlashCards_Service_SpringData</module>
    <module>FlashCards_Service_Jpa</module>
    <module>FlashCards_WebServices</module>
    <module>FlashCards_Struts</module>
    <module>FlashCards_Test</module>
</modules>
<build>
    <plugins>
        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>${jetty.version}</version>
        </plugin>
    </plugins>
</build>

这与2009年this post提出的问题基本相同。已经有几年了,我想知道现在是否有其他选择。上一篇文章提出了两个解决方案(1)使用货物插件和(2)从子模块中建立姐妹战争。

4 个答案:

答案 0 :(得分:2)

您的最佳镜头可能是将jetty插件配置为run multiple webapps。我不确定它是否可以从您的父pom中运行,因此您可能必须使用您的模块作为“启动器”webapp,或在您的父项目中创建“虚拟webapp”。

答案 1 :(得分:2)

        <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.2.6.v20141205</version>
            <configuration>
                <scanIntervalSeconds>0</scanIntervalSeconds>
                <webApp>
                    <contextPath>/</contextPath>
                </webApp>
                <contextHandlers>
                    <contextHandler implementation="org.eclipse.jetty.maven.plugin.JettyWebAppContext">
                        <war>${project.basedir}/app1/target/app1.war</war>
                        <contextPath>/app1</contextPath>
                    </contextHandler>
                    <contextHandler implementation="org.eclipse.jetty.maven.plugin.JettyWebAppContext">
                        <war>${project.basedir}/app2/target/app2.war</war>
                        <contextPath>/app2</contextPath>
                    </contextHandler>
                </contextHandlers>
                <stopPort>9999</stopPort>
                <stopKey>STOP</stopKey>
            </configuration>
        </plugin>

答案 2 :(得分:1)

  

cd parent_module
  mvn jetty:run -pl sub_module

答案 3 :(得分:0)

  

cd parent_module
  mvn jetty:run -pl sub_module

要完成@jiahut答案:

$ mvn jetty:run --help
(...)
-am,--also-make                        If project list is specified, also
                                        build projects required by the
                                        list
-amd,--also-make-dependents            If project list is specified, also
                                        build projects that depend on
                                        projects on the list
(...)
-pl,--projects <arg>                   Comma-delimited list of specified 
                                        reactor projects to build instead
                                        of all projects. A project can be
                                        specified by [groupId]:artifactId
                                        or by its relative path

来自Apache Archiva的示例:

mvn jetty:run -pl :archiva-webapp -am