我有两个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版本?
答案 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,它有一个简洁的例子。