gpt4 book ai didi

java - Maven 共享依赖

转载 作者:行者123 更新时间:2023-12-01 15:38:14 24 4
gpt4 key购买 nike

刚刚进入 Maven,我遇到了循环依赖问题的情况。我原来的结构是

|-mainProject
|-webProject

其中 mainProject 将 webProject 作为依赖项(war 打包)。由于 webProject 也依赖于 mainProject,因此出现错误,因此我更改了结构

|-coreProject
|-mainProject
|-webProject

以便将核心打包到 jar 中,并且 main 和 web 都将 core 作为依赖项。现在我在创建 -shade.jar 时看到不同的错误。

CoreProject 的组件需要被 main 和 web 项目使用。在这种情况下,最佳实践是什么?

<小时/>

我的依赖关系图看起来像

mainProject(jar) -> webProject(war)   --
|-> coreProject(jar) <-|
|-> jetty jars

我在 mainProject 中使用嵌入式 jetty,因此我的最终结果将是 mainProject 中的单个 jar 文件,其中包括 web 和 coreProjects。

[错误] 无法在项目 mainProject 上执行目标 org.apache.maven.plugins:maven-shade-plugin:1.4:shade (默认): 创建着色 jar 时出错: Manifest 主要属性的签名文件摘要无效-> [帮助1]

我尝试过过滤器,例如

<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>

但仍然遇到同样的错误

最佳答案

按照您所描述的方式将 WAR 项目作为另一个项目的依赖项是非常不寻常的。我能想到的一个有效方案是将 WAR 捆绑到“更高”级别的存档中(如 EAR)。但在这种情况下,您的依赖项是在您的 EAR 项目中定义的,而不是相反。无论如何,如果您想遵循最佳实践,请将核心类放入 mainProject 中,并将其打包设置为 JAR。然后将其依赖项添加到您的 webProject 中。

如果 mainProjectwebProject 始终一起部署,您应该考虑将它们定义为 multimodule POM 中的子模块。 .

关于java - Maven 共享依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8529085/

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