gpt4 book ai didi

maven-2 - 如何使用 maven 包含第二级依赖项

转载 作者:行者123 更新时间:2023-12-04 06:44:23 24 4
gpt4 key购买 nike

我有一个 pom.xml 依赖项的项目 A:

    <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.2</version>
</dependency>

commons-email 依赖于 javax.mail-1.4.1

我运行 mvn install 将 projectA.jar 安装到本地 maven repo 中。

在项目 B 中,我依赖 projectA.jar。
当我运行项目 B 时,由于 javax 中缺少类文件而失败:
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
java.lang.ClassNotFoundException: com.sun.mail.smtp.SMTPTransport

如何在不为 javax.mail jar 显式放置 maven 条目的情况下成功运行项目 B?

编辑:

我想我发现了问题。
我正在使用带有 true 的 maven-shade-plugin 并且它正在删除 installed(.m2) 项目中的 org.apache.commons:commons-email:jar 依赖项一个 pom 文件。

注释掉项目 A 的 maven-shade-plugin 修复了依赖问题。

最佳答案

How can i run project B successfully without explicitly putting a maven entry for the javax.mail jar?



嗯,这很奇怪。 c.s.m.s.SMTPTransport应该由 mail-1.4.1.jar 提供这是 commons-email 的依赖项.项目 B 应该可以传递。

您能否在项目 B 上运行以下命令并发布输出
mvn dependency:tree

更新:您的依赖项肯定有些奇怪,我无法重现该问题。

我很快用以下 pom 创建了第一个项目:
<project>
...
<groupId>com.stackoverflow</groupId>
<artifactId>Q3875317-A</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
</project>

另一个取决于第一个工件:
<project>
...
<groupId>com.stackoverflow</groupId>
<artifactId>Q3875317-B</artifactId>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>Q3875317-A</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

这是我为第二个项目获得的依赖树:

$ mvn 依赖项:树
[信息] 正在扫描项目...
[信息] 正在搜索带有前缀的插件存储库:'dependency'。
[信息] ----------------------------------------------- -------------------------
[信息] Q3875317-B楼
[信息] 任务段:[依赖:树]
[信息] ----------------------------------------------- -------------------------
[信息] [依赖:树{执行:默认cli}]
[信息] com.stackoverflow:Q3875317-B:jar:1.0-SNAPSHOT
[信息] +- com.stackoverflow:Q3875317-A:jar:1.0-SNAPSHOT:compile
[信息] |\- org.apache.commons:commons-email:jar:1.2:compile
[信息] | +- javax.mail:mail:jar:1.4.1:compile
[信息] |\- javax.activation:activation:jar:1.1:compile
[信息]\- junit:junit:jar:3.8.1:test
[信息] ----------------------------------------------- -------------------------
[信息] 构建成功
[信息] ----------------------------------------------- -------------------------
...

一切都在那里,正如预期的那样。

如果您得到不同的结果,并且您的 POM 有任何值得注意的地方,请展示它们。

PS:我删除了我最初建议的命令之一,因为它不允许查看传递依赖项。

关于maven-2 - 如何使用 maven 包含第二级依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3875317/

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