Eclipse使得处理多模块maven项目变得简单,因为在相关模块将看到对其进行更改之前,您不必重新构建和重新安装模块。因此,您只需更改代码,eclipse就会在后台神奇地更新依赖关系。
我也希望在验收测试中实现此行为。
我有
storage-service
storage-service-war
storage-service-acceptance-tests
如果我使用嵌入式jetty或tomcat在存储服务战项目中进行测试,那么显然在测试中可以立即查看代码更改,但是当从存储进行测试时,我看不到任何方法可以实现相同的快速迭代测试 - 服务验收测试。
我看待它的每一种方式似乎都需要构建存储服务战争,然后使用从中生成的人工制品,但是当你只想改变一行时,这似乎有些过分。
有没有人有这么好的方法呢?
干杯
墩
答案 0 :(得分:0)
回答我自己的问题:D我提出的解决方案不适用于CI,它可能只在进行本地构建时才有效,因为它利用了项目的相对路径。在底部,我概述了一个更强大但更复杂的方法,应该满足eclipse和CI。
我正在考虑为战争项目的war插件配置将attachClasses设置为true。
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<attachClasses>true</attachClasses>
</configuration>
</plugin>
</plugins>
然后,您可以在依赖项目中引用jar,如下所示
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>storage-service-war</artifactId>
<version>${project.version}</version>
<classifier>classes</classifier>
</dependency>
然后我想我可以使用嵌入式jetty或tomcat从验证测试模块中运行我的测试,并使用相对路径将它们指向war项目中定义的web.xml。
这可以通过命令行与maven一起使用,但在eclipse中失败:(
这个问题是,附加类生成的jar没有被eclipse m2e集成所接收 - 请参阅https://bugs.eclipse.org/bugs/show_bug.cgi?id=365419,遗憾的是它不会修复。
所以我现在的解决方案是在eclipse中手动添加storage-service-war项目到我的验收测试项目构建路径。它不是很好,但它的工作原理
上述解决方案有点苛刻,但概述的替代方案更为复杂。
通过将项目拆分为以下内容,我认为可以有正确的eclipse集成和适用于CI的项目
storage-service
storage-service-core
storage-service-war
storage-service-acceptance-tests
storage-service-config
核心项目包含webapp的逻辑和源,并且是jar类型,config包含web.xml和任何其他配置文件,也是jar类型。然后,验收测试和战争项目都是战争类型,仅用于将核心项目打包成战争并将配置提取到webapp / WEB-INF目录,以便它们可以共享一个共同的设置。