如何使用不同的包装配置Maven多模块依赖于子项目

时间:2018-02-19 05:36:11

标签: java maven war multi-module

我有两个maven项目:一个是带有 WAR包装的休息服务(其余),另一个是使用 jar包装访问数据库的模块(服务)。

在rest模块的pom中,我使用service添加依赖关系:

<dependency>
    <groupId>project</groupId>
    <artifactId>service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

但是我收到了这个错误:

  

项目'rest'缺少必需的库:        'C:\用户\ user.m2 \库\项目\服务\ 0.0.1-SNAPSHOT \服务0.0.1-SNAPSHOT.jar'

我还在开发服务模块,所以它不能在.m2库中。如何连接这两个模块。有没有办法可以访问@RestController类中的服务功能?

编辑: 我的项目目录结构是

Rest
  |--- pom.xml

Service
  |--- pom.xml

两者都是独立的项目。

在服务项目上运行mvn clean package install有效,但是,有没有办法让maven读取我的snapshoot版本?

1 个答案:

答案 0 :(得分:1)

要让多模块项目协同工作,您需要将它们与父项目一起添加。不要担心所有模块化项目都可以独立完成并单独构建。比如你的情况,你的父项目目录应该是

parent
  |-- pom.xml
  rest
     |--- pom.xml  
  service
     |--- pom.xml

在您的顶级父级 POM中,您将告诉maven所有子模块项目,例如

    <project xmlns="http://maven.apache.org/POM/4.0.0" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
             http://maven.apache.org/xsd/maven-4.0.0.xsd">

       <modelVersion>1.0.0</modelVersion>
       <groupId>your.groudid</groupId>
       <artifactId>parent</artifactId>
       <version>1.0</version>
       <packaging>pom</packaging>

        <modules>
            <module>rest</module>
            <module>service</module>
        </modules>
    </project>

在您的服务模块pom.xml中有此

<parent>
    <groupId>your.groudid</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>service</artifactId>
<name>service</name>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

它会告诉maven它有一个父模块,需要将它构建为一个带有相关artifact-id的jar

现在,您可以告诉maven您的休息模块具有服务模块的依赖性,就像其他依赖项一样。按照这个

<parent>
    <groupId>your.groudid</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>rest</artifactId>
<name>rest</name>
<packaging>war</packaging>

<dependencies>
   ...
    <dependency>
        <groupId>your.groupid</groupId>
        <artifactId>service</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    ....
</dependencies>

注意:为了更好地理解,您可以阅读这篇简短的Maven Multi Module Project文章。还有这个github repository,它有一个简洁的例子。