gpt4 book ai didi

java - Maven - 对于部署在 Artifactory 上的 Artifact ,传递依赖性没有得到解决

转载 作者:搜寻专家 更新时间:2023-11-01 02:37:32 25 4
gpt4 key购买 nike

我有两个项目 - A 和 B,其中 A 依赖于 B。我将 B 打包为 jar 并将其部署在 maven 服务器( Artifactory )上,然后将该 jar 作为对项目 A 的正常依赖项包含在 pom 文件中. B 的 jar 文件出现在项目 A 的 Maven Dependencies 中,但是项目 B 的依赖项没有显示在依赖层次结构中。它导致 B 的依赖项未找到类异常。

但是,我的项目 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 quickstart 原型(prototype)。我的项目的项目结构是(我打包成jar):

project-name
src/main/java
src/test/java
pom.xml

最佳答案

要成功解决传递依赖关系,项目 B 的 jar 和 pom.xml 必须在 Maven 存储库中可访问。将 Artifact 部署到远程存储库时,请确保 jar 和 pom.xml 均已部署并可供下载。

将必要的文件部署到远程存储库后,使用命令行构建项目 A。指定构建 Maven 目标以触发将所有依赖项下载到本地 Maven 存储库。 mvn compilemvn package 将触发下载并成功构建项目 A。

一旦项目 B 的 jar 和 pom.xml 位于本地 Maven 存储库中,更新 Eclipse 中的 Maven 项目,它们将重新构建并正确解析依赖关系。

关于java - Maven - 对于部署在 Artifactory 上的 Artifact ,传递依赖性没有得到解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43999612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com