0

Eclipse使多模块maven项目的工作变得简单,因为您不必在依赖模块看到更改之前重新构建和重新安装模块它。所以你只需改变代码并在后台神奇地更新依赖关系。Maven/Eclipse - 快速迭代验收测试打包为WAR文件的项目

我想要在验收测试中实现这种行为。

storage-service 
    storage-service-war 
    storage-service-acceptance-tests 

如果我使用嵌入式码头或Tomcat到存储服务战项目中测试则显然代码变化在测试中立即查看,但我看不到任何方式来实现从存储 - 服务 - 验收测试中进行测试时,同样的快速迭代测试。

每一种方式,我看它,似乎我必须建立存储服务战,然后使用它生成的人工制品,但当你只想改变一行时,它看起来像是过度杀伤。

有没有人有这样做的好方法?

干杯

码头

回答

0

所以回答我的问题:D我想出了将不会在CI它很可能只是工作的工作做一个本地编译的时候,因为它利用了相对路径的解决方案的项目。最后,我概述了一个更强大但更复杂的方法,它应该能够满足日食和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> 

然后,您可以参考罐子的依赖项目如下

<dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>storage-service-war</artifactId> 
     <version>${project.version}</version> 
     <classifier>classes</classifier> 
    </dependency> 

然后,我想我可以从验收测试模块内使用嵌入码头或Tomcat运行我的测试中,指着他们war项目中使用相对路径定义的web.xml。

这通过命令行正常工作与行家,但在Eclipse :(失败

这样做的问题是,通过附加类产生的罐子是不是由Eclipse M2E整合拿起看到 - https://bugs.eclipse.org/bugs/show_bug.cgi?id=365419不幸的是它不会是固定。

所以我暂时的解决办法是存储服务战项目中手动添加到日食我验收测试项目构建路径。它不是很大,但它的工作原理

上述解决方案是一个有点哈克但是所提出的替代方案涉及更多一点,

通过项目分成我认为这将有可能有正确的Eclipse的集成和对CI

storage-service 
    storage-service-core 
    storage-service-war 
    storage-service-acceptance-tests 
    storage-service-config 

核心项目包含Web应用程序的逻辑和源工作,是类型的项目如下jar,配置包含web.xml和其他任何配置文件,并且也是jar类型。然后验收测试和战争项目都是类型战争,并且仅用于将核心项目打包成战争并将配置提取到webapp/WEB-INF目录,以便它们可以共享通用设置。