我有两个项目——A和B,其中A依赖于B。我将B打包成jar文件并在Maven服务器(Artifactory)上部署它,然后在pom文件中将该jar文件作为常规依赖项包含在项目A中。B的jar文件显示在项目A的Maven依赖项中,但是B项目的依赖关系未显示在依赖层次结构中。这导致了B的依赖项类找不到异常。
然而,我的A和B项目在同一个Eclipse工作空间中。当我打开项目B时,项目A开始从工作空间引用项目B,而不是远程存储库,并且一切运行良好。
这个问题 - Maven. Transitive dependencies 最接近我的问题,但是我的B项目的依赖项不是可选的。
出了什么问题?
项目B的POM:
项目A的POM
然而,我的A和B项目在同一个Eclipse工作空间中。当我打开项目B时,项目A开始从工作空间引用项目B,而不是远程存储库,并且一切运行良好。
这个问题 - Maven. Transitive dependencies 最接近我的问题,但是我的B项目的依赖项不是可选的。
出了什么问题?
项目B的POM:
<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myapp</groupId>
<artifactId>utils</artifactId>
<version>1.0.0-RELEASE</version>
<packaging>jar</packaging>
<name>utils</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- Following doesn't get added to project A -->
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
</dependencies>
</project>
项目A的POM
<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myapp</groupId>
<artifactId>core-app</artifactId>
<version>1.0.0-RELEASE</version>
<packaging>jar</packaging>
<name>core-app</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>com.myapp</groupId>
<artifactId>utils</artifactId>
<version>1.0.0-RELEASE</version>
</dependency>
</dependencies>
</project>
我正在使用Maven快速启动原型。 我的项目结构(打包为jar)如下:
project-name
src/main/java
src/test/java
pom.xml