如何使用 Maven 添加项目及其依赖项?
How to add a project and its dependecies using Maven?
我有一个项目 (A) 使用我和我的团队开发的 class 库 (B)。
Class 库 (B) 导入 searchbox-io.Jest 项目以访问我的 ElasticSearch 引擎并进行一些处理。项目 (A) 为用户界面实现 Restful 服务。
这是B的POM,Class库:
<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>4.0.0</modelVersion>
<groupId>br.org.b</groupId>
<artifactId>b-project</artifactId>
<version>0.1.11</version>
<packaging>jar</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>org.kuali.maven.wagons</groupId>
<artifactId>maven-s3-wagon</artifactId>
<version>1.2.1</version>
</extension>
</extensions>
</build>
<dependencies>
<dependency>
<groupId>io.searchbox</groupId>
<artifactId>jest</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
</project>
这是项目A的POM:
<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>4.0.0</modelVersion>
<groupId>MachineAPI</groupId>
<artifactId>MachineAPI</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>br.org.b</groupId>
<artifactId>b-project</artifactId>
<version>0.1.11</version>
</dependency>
</dependencies>
</project>
问题:
然而,当我尝试执行项目 A 时,它没有找到对搜索框的引用-io.Jest。
我的问题是我必须让项目 A 导入与 Class 库使用的相同引用,这样我才能使用 ElasticSearch 的方法。我该如何解决?
如果两个项目都依赖于同一个包,则应该在两个项目依赖项中明确列出。不要指望传递依赖。
如果两个项目共享多个依赖项,而不是在每个 POM 上列出所有依赖项,您可以创建一个具有所有公共依赖项的 "parent" POM,并将其作为两个项目的父 POM。
我有一个项目 (A) 使用我和我的团队开发的 class 库 (B)。
Class 库 (B) 导入 searchbox-io.Jest 项目以访问我的 ElasticSearch 引擎并进行一些处理。项目 (A) 为用户界面实现 Restful 服务。
这是B的POM,Class库:
<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>4.0.0</modelVersion>
<groupId>br.org.b</groupId>
<artifactId>b-project</artifactId>
<version>0.1.11</version>
<packaging>jar</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>org.kuali.maven.wagons</groupId>
<artifactId>maven-s3-wagon</artifactId>
<version>1.2.1</version>
</extension>
</extensions>
</build>
<dependencies>
<dependency>
<groupId>io.searchbox</groupId>
<artifactId>jest</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
</project>
这是项目A的POM:
<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>4.0.0</modelVersion>
<groupId>MachineAPI</groupId>
<artifactId>MachineAPI</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>br.org.b</groupId>
<artifactId>b-project</artifactId>
<version>0.1.11</version>
</dependency>
</dependencies>
</project>
问题:
然而,当我尝试执行项目 A 时,它没有找到对搜索框的引用-io.Jest。
我的问题是我必须让项目 A 导入与 Class 库使用的相同引用,这样我才能使用 ElasticSearch 的方法。我该如何解决?
如果两个项目都依赖于同一个包,则应该在两个项目依赖项中明确列出。不要指望传递依赖。
如果两个项目共享多个依赖项,而不是在每个 POM 上列出所有依赖项,您可以创建一个具有所有公共依赖项的 "parent" POM,并将其作为两个项目的父 POM。