Java 如何使使用maven assembly插件生成的WAR存档可用于其他项目';单元测试?

Java 如何使使用maven assembly插件生成的WAR存档可用于其他项目';单元测试?,java,maven-2,junit,maven-assembly-plugin,Java,Maven 2,Junit,Maven Assembly Plugin,我的问题由两个maven项目组成,一个服务器项目a和一个客户端项目B。a使用maven汇编插件生成a的几个变体,其中一个变体是WAR归档。我面临的问题与B的测试驱动开发有关;如何使项目A中生成的WAR归档可以从项目B中的单元测试中访问/寻址?我的想法是在项目B中构建测试用例,其中WAR存档通过WebApppContext的setWar(字符串路径)函数部署在嵌入式Jetty服务器中。您可以将来自其他子模块的工件声明为测试依赖项,例如: ${project.groupId} 模 ${projec

我的问题由两个maven项目组成,一个服务器项目a和一个客户端项目B。a使用maven汇编插件生成a的几个变体,其中一个变体是WAR归档。我面临的问题与B的测试驱动开发有关;如何使项目A中生成的WAR归档可以从项目B中的单元测试中访问/寻址?我的想法是在项目B中构建测试用例,其中WAR存档通过WebApppContext的setWar(字符串路径)函数部署在嵌入式Jetty服务器中。

您可以将来自其他子模块的工件声明为测试依赖项,例如:


${project.groupId}
模
${project.version}
试验罐
测试
这样,您肯定可以使用来自另一个模块的jar。虽然我不确定它是否适用于WAR文件,但它可能值得一试

请注意,针对部署在嵌入式web容器中的WAR运行的测试很难算作单元测试,而不是集成测试。在项目中起作用的方法是:

  • 构建web应用程序(在我们的例子中是EAR)并部署它(我们使用JBoss Maven插件,但在您的例子中可能是Cargo或其他插件)
  • 运行单独的构建(具有特定的超时以允许服务器启动),该构建针对已部署的web应用程序执行集成测试

  • 感谢您的回答,我通过在依赖项声明中使用-标记并稍微调整maven依赖项插件,成功地使其工作。
    <dependencies>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>ModuleA</artifactId>
            <version>${project.version}</version>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
    
    </dependencies>