如何配置Maven多模块依赖于不同包装的子项目
How to configure Maven multi module dependency on sub project with different packaging
我有 2 个 Maven 项目:一个是带有 WAR 包装的休息服务 (休息),另一个是一个访问数据库的模块 jar包装(服务)。
在rest模块的pom中我添加了服务依赖如下:
<dependency>
<groupId>project</groupId>
<artifactId>service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
但是我收到了这个错误:
Project 'rest' is missing required library:
'C:\Users\user.m2\repository\project\service[=14=].0.1-SNAPSHOT\service-0.0.1-SNAPSHOT.jar'
我还在开发服务模块,所以它不能在.m2 库中。我怎样才能连接这两个模块。有什么方法可以让我在 @RestController
类?
中访问我的服务功能
编辑:
我的项目目录结构是
Rest
|--- pom.xml
Service
|--- pom.xml
两者都是独立的项目。
运行 mvn clean package install
服务项目有效,但是,有没有办法让 maven 读取我的快照版本?
要让您的多模块项目协同工作,您需要将它们添加到父项目中。不要担心您所有的模块化项目都可以独立并单独构建。对于你的情况,你的父项目目录应该像
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 它有一个父模块并且需要将其构建为一个 jar 与相关 artifact-id
现在您可以告诉 Maven 您的 rest 模块与其他依赖项一样具有 service 模块的依赖项。关注这个
<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 article. And also this github repository,其中有一个关于此的简明示例。
我有 2 个 Maven 项目:一个是带有 WAR 包装的休息服务 (休息),另一个是一个访问数据库的模块 jar包装(服务)。
在rest模块的pom中我添加了服务依赖如下:
<dependency>
<groupId>project</groupId>
<artifactId>service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
但是我收到了这个错误:
Project 'rest' is missing required library: 'C:\Users\user.m2\repository\project\service[=14=].0.1-SNAPSHOT\service-0.0.1-SNAPSHOT.jar'
我还在开发服务模块,所以它不能在.m2 库中。我怎样才能连接这两个模块。有什么方法可以让我在 @RestController
类?
编辑: 我的项目目录结构是
Rest
|--- pom.xml
Service
|--- pom.xml
两者都是独立的项目。
运行 mvn clean package install
服务项目有效,但是,有没有办法让 maven 读取我的快照版本?
要让您的多模块项目协同工作,您需要将它们添加到父项目中。不要担心您所有的模块化项目都可以独立并单独构建。对于你的情况,你的父项目目录应该像
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 它有一个父模块并且需要将其构建为一个 jar 与相关 artifact-id
现在您可以告诉 Maven 您的 rest 模块与其他依赖项一样具有 service 模块的依赖项。关注这个
<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 article. And also this github repository,其中有一个关于此的简明示例。