Rest Maven如何在编译时处理WAR依赖关系?

Rest Maven如何在编译时处理WAR依赖关系?,rest,maven,war,dependency-management,Rest,Maven,War,Dependency Management,我正在使用Maven 3处理一个(大型)项目。该项目使用Scala、Akka和Spray框架定义了一组REST服务。每个服务都被定义为一个独立的项目,通过“mvn包”命令生成一个WAR 我必须将这些不同的服务“组装”到一个“系统”中,也就是说,这些服务的一个子集将在一场战争中为特定目的而部署。Maven WAR overlay给人的第一印象很好:只需创建一个新项目,并添加要作为依赖项包含的服务 <dependencies> <dependency> <g

我正在使用Maven 3处理一个(大型)项目。该项目使用Scala、Akka和Spray框架定义了一组REST服务。每个服务都被定义为一个独立的项目,通过“mvn包”命令生成一个WAR

我必须将这些不同的服务“组装”到一个“系统”中,也就是说,这些服务的一个子集将在一场战争中为特定目的而部署。Maven WAR overlay给人的第一印象很好:只需创建一个新项目,并添加要作为依赖项包含的服务

<dependencies>
  <dependency>
    <groupId>net.modelbased.sensapp.service</groupId>
    <artifactId>net.modelbased.sensapp.service.metamodel.repository</artifactId>
    <version>0.0.1</version>
    <type>war</type>
  </dependency>     
</dependencies>
但是。。。Spray框架需要实现一个引导,即一个加载已实现服务的类。这个文件必须编译,因为它是一个普通的scala类。但是看起来maven在编译类路径中没有包含WAR依赖项

我看到了WARpath插件(http://static.appfuse.org/maven-warpath-plugin/) ... 但它看起来并没有多少过时。是否有一种“标准”的方式来完成我想做的事情(例如,在编译类路径中包含WAr)


项目的一个要求是,每个服务都必须作为一个独立的工件进行部署。解决方案可以是将服务的核心实现为JAR项目,还可以提供一个WAR项目,其中包括对JAR和相关配置文件的重构。但它将乘以定义的项目数的2,这在某种程度上不是最优的…

您提出的解决方案看起来不错

您可以从类中构建一个jar,然后使用这个jar作为依赖项构建一个war


你可能也可以在一个项目中完成这项工作,我看不出需要两个不同的项目

您可以使用的配置为您提供了一种从src/main/java文件中创建独立jar文件的方法。 您必须添加配置项:

  <configuration>
    <archiveClasses>true</archiveClasses>
    <attachClasses>true</attachClasses>
  </configuration>

真的
真的
这将创建一个单独的jar文件,其中包含分类器,该类可用作通常的依赖项

  <configuration>
    <archiveClasses>true</archiveClasses>
    <attachClasses>true</attachClasses>
  </configuration>