1

我需要使用外部(可能是远程).war 文件(App T)作为我的测试内部的 Web 应用程序资源启动一个码头,以便我的被测系统(App A)可以连接到它以针对其 REST 接口运行调用.

我找到了很多关于如何为被测系统之战(App A)启动码头的教程。我还发现了一些关于如何让外部 .war (App T) 的 maven 启动码头作为构建周期的一部分。但是我不知道是否可以执行上述操作。

理想情况下,我将 AppT 项目添加为 maven 依赖项并通过类路径访问它。

4

1 回答 1

3

好吧,我不知道你会怎么做,如果它是一个远程战争文件(你可能需要在执行码头插件之前先下载它),但这里是如何去做,当你'已经在你的文件系统的某个地方找到了它:

        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>${version.jetty}</version>
            <configuration>

                <contextHandlers>
                    <contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
                        <war>${project.build.directory}/webapps/foo-bar.war</war>
                        <contextPath>/foo</contextPath>
                    </contextHandler>
                </contextHandlers>

            </configuration>
        </plugin>

我的建议是将该战争添加为具有范围的依赖项:提供。

<dependencies>

    <!-- Webapps which will not be included in the final WAR artifact: -->
    <dependency>
        <groupId>com.foo.bar</groupId>
        <artifactId>foo-bar</artifactId>
        <version>${version.foo.bar}</version>
        <type>war</type>
        <scope>provided</scope>
    </dependency>

</dependencies>

此外,您很可能需要以下内容:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.3</version>

            <executions>
                <execution>
                    <!-- Used to copy the foo bar war to the webapps folder -->
                    <id>copy-dependency-foo-bar</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>

                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>com.foo.bar</groupId>
                                <artifactId>foo-bar</artifactId>
                                <version>${version.foo.bar}</version>
                                <type>war</type>
                                <overWrite>true</overWrite>
                                <outputDirectory>${project.build.directory}/webapps</outputDirectory>
                                <destFileName>foo-bar.war</destFileName>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>

上面的最后一点将确保在 jetty 插件尝试加载解析的工件之前将其复制到目标目录的 webapps 子文件夹。

于 2012-06-21T12:47:09.787 回答