2

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

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

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

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

确实,父 pom 上没有 webapp 目录。

这是我的pom的摘录。完整的文件可以在这里找到

<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 年在这篇文章中提出的问题基本相同。已经有几年了,我想知道现在是否还有其他选择。上一篇文章提出了两种解决方案(1)使用 cargo 插件和(2)从子模块构建姐妹战争。

4

4 回答 4

2

你最好的办法可能是配置 jetty 插件来运行多个 webapps。我不确定它是否可以从你的父 pom 中工作,所以你可能必须使用你的模块作为“启动器”webapp,或者在你的父项目中创建一个“虚拟 webapp”。

于 2013-04-16T05:09:35.573 回答
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>
于 2015-01-23T08:00:11.487 回答
1

cd parent_module
mvn jetty:run -pl sub_module

于 2014-06-23T13:29:58.767 回答
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
于 2018-12-28T00:55:16.733 回答