Maven 构建与依赖树不同

2023-12-21

我正在使用 Maven 3 构建一个具有 3 层的 java 应用程序 - 服务器、ejb 和 ui。 EJB项目依赖于Server项目,UI项目仅依赖于EJB,并为Server传递依赖提供排除。

当 UI 项目构建为 war 时,服务器依赖项将被包含在内,尽管它没有显示在 dependency:tree 命令中。

这是运行的相关输出mvn dependency:tree

**project.name:UI:war:1.0 SNAPSHOT**
+-  project.name:Common:jar:1.0 SNAPSHOT:compile
|   +  org_common:_lib:jar:16.0.006:compile
|   |  +- log4j:log4j:jar:1.2.16:compile
|   |  \- commons configuration:commons configuration:jar:1.6:compile
|   |     +- commons lang:commons lang:jar:2.4:compile
|   |     +- commons digester:commons digester:jar:1.8:compile
|   |     \- commons beanutils:commons beanutils core:jar:1.8.0:compile
|   +- org_common:_security_lib:jar:16.0.006:compile
|   \- org.springframework:spring:jar:2.0:compile
+-  **project.name:EJB:ejb client:client:1.0 SNAPSHOT:compile**
|   \- com.ibm.websphere.appserver:j2ee:jar:7.0.0.9:compile
+-  org_common:_uicomponent:jar:16.0.006:compile

这是运行时的输出依赖关系树mvn clean install -X

**project.name:UI:war:1.0 SNAPSHOT**
+-  project.name:Common:jar:1.0 SNAPSHOT:compile
|   +  org_common:_lib:jar:16.0.006:compile
|   |  +- log4j:log4j:jar:1.2.16:compile
|   |  \- commons configuration:commons configuration:jar:1.6:compile
|   |     +- commons lang:commons lang:jar:2.4:compile
|   |     +- commons digester:commons digester:jar:1.8:compile
|   |     \- commons beanutils:commons beanutils core:jar:1.8.0:compile
|   +- org_common:_security_lib:jar:16.0.006:compile
|   \- org.springframework:spring:jar:2.0:compile
+-  **project.name:EJB:ejb client:client:1.0 SNAPSHOT:compile**
|   +- **project.name:Server:jar:1.0 SNAPSHOT:compile**
|   |   +- javassist:javassist:jar:3.4.GA:compile
|   |   +- project.filestore:filestore_client:jar:7.0.003:compile
|   |   +- com.ibm.db2:db2jcc:jar:9.7.fp1.aix64.s091114:compile
|   |   +- com.ibm.db2:db2java:jar:9.7.fp1.aix64.s091114:compile
|   |   +- com.ibm.db2:db2jcc_license_cu:jar:9.7.fp1.aix64.s091114:compile
|   \- com.ibm.websphere.appserver:j2ee:jar:7.0.0.9:compile
+-  org_common:_uicomponent:jar:16.0.006:compile

对服务器的依赖性是两棵树之间的唯一区别。 这两个输出不应该总是相同吗?什么可能导致包含的库未显示在 dependency:tree 中?

父 POM 将模块定义为:

<modules>
    <module>Server</module>
    <module>EJB</module>
    <module>UI</module>
</modules>

EJB POM 中列出的依赖项是:

<dependencies>
        <dependency>
            <groupId>project.name</groupId>
            <artifactId>Server</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>

UI 中的依赖关系是:

<dependencies>
        <dependency>
            <groupId>project.name</groupId>
            <artifactId>EJB</artifactId>
            <version>${project.version}</version>
            <type>ejb-client</type>
            <exclusions>
                <exclusion>
                    <groupId>project.name</groupId>
                    <artifactId>Server</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
</dependencies>

我知道我可以明确地将服务器 jar 排除在 WAR 中,但我更愿意解决实际问题。


你是对的,两种情况下的输出应该是相同的。然而,Maven 3 转向使用 Aether 进行依赖关系解析,但现在 dependency:tree 使用旧的依赖关系解析机制,这就是差异的原因。查看以下链接了解详细信息。

https://cwiki.apache.org/MAVEN/maven-3x-compatibility-notes.html#Maven3.xCompatibilityNotes-DependencyResolution https://cwiki.apache.org/MAVEN/maven-3x-compatibility-notes.html#Maven3.xCompatibilityNotes-DependencyResolution

因此,您应该仅依赖 mvn clean install -X 的输出进行依赖项管理。

Edit

从 Maven 依赖插件 2.5 版本开始,dependency:tree也使用以太(参见错误报告 http://jira.codehaus.org/browse/MDEP-339,以及)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven 构建与依赖树不同 的相关文章

  • 多线程环境下如何更好的使用ExecutorService?

    我需要创建一个库 其中包含同步和异步方法 executeSynchronous 等待直到有结果 返回结果 executeAsynchronous 立即返回一个 Future 如果需要 可以在其他事情完成后进行处理 我的图书馆的核心逻辑 客户
  • 设置 SWT Shell 的默认字体

    有没有办法为整个 Shell 设置默认字体 以便任何新控件都将使用相同的字体 看来现在我必须为我创建的每个控件设置字体 这导致了太多的冗余 默认使用的字体由平台选择 请参阅中的其他信息 类字体 SWT 标准小部件工具包 http book
  • 在 TestNG 中运行多个类

    我正在尝试自动化一个场景 其中我想登录一次应用程序 然后进行操作而无需再次重新登录 考虑一下 我有在特定类的 BeforeSuite 方法中登录应用程序的代码 public class TestNGClass1 public static
  • 支持通过 OAuth 进行 Facebook/Twitter 身份验证的 CAS 服务器

    我正在寻找一个支持 Facebook Twitter 通过 OAuth 进行单点登录身份验证的 CAS 服务器 我检查过 JASIG CAS 服务器 但它看起来不支持它们 我的 java web 应用程序基于 Spring Security
  • Java 泛型:如何为泛型类型指定类类型?

    我有一个 POJO 指定为 MyClass u where U是泛型类型参数 我正在尝试编写一个接受类引用的实用方法Class u
  • 如何制作无限的jscrollpane?

    我之前已经实现过拖动滚动 但是创建无限滚动窗格的最佳方法是什么 当然不会有任何滚动条 我将实现拖动滚动 我想做的是在无限表面上实现动态加载 EDIT 当然 它实际上不会是无限的 我想问如何伪造它 您可以执行以下操作 AdjustmentCl
  • 打印 jasper 文件时执行报表 SQL 语句时出错

    我修改了一个旧项目 但无法确定这段代码有什么问题 使用下面的 jrxml它创造 jasper文件 当我打印 jasper 文件时 使用此代码JasperPrint jasperPrint JasperFillManager fillRepo
  • 如何通过子 POJO 的属性过滤复合 ManyToMany POJO?

    我有两个像这样的房间实体 Entity public class Teacher implements Serializable PrimaryKey autoGenerate true public int id ColumnInfo n
  • 如何使用 Guava 连接字符串?

    我写了一些代码来连接字符串 String inputFile for String inputLine list inputFile inputLine trim 但我不能使用 连接 所以我决定使用 Guava 所以我需要使用Joiner
  • 使用Java开发跨平台,不同平台字体缩放不同

    我正在为我的大学制作一些软件 需要一个 GUI 在它的第一个版本中 我让它使用系统外观 因此它看起来像 Linux Mac Windows 中的本机应用程序 我发现这很麻烦 因为我必须根据操作系统使所有 JLabel 具有不同的大小 无论分
  • Java ConcurrentModificationException [重复]

    这个问题在这里已经有答案了 当删除倒数第二个元素时 没有 ConcurrentModificationException List
  • 在 Intellij IDEA 12 中创建 Maven 项目,但始终位于“加载原型列表”页面

    我在IntelliJ IDEA 12中创建了一个Maven项目 完成项目名称并按 下一步 现在它显示了GroupId ArtifactId和Version 但 Maven 原型并没有出现 它说 正在加载原型列表 我可以按 完成 但创建的项目
  • 在Java中多次读取System.in会导致IOException?

    我正在尝试创建一个小命令行游戏来强化我在过去几个月中在 Java 中学到的一些东西 我正在尝试创建一个名为 readInput 的方法 它返回一个我可以一次又一次调用的字符串 第一次它工作正常 但第二次它会导致 IO Exception 如
  • 战争库中的罐子爆炸

    我们可以将分解的 jar 文件放入 war web inf 库中吗 它在 JBOSS 4 2 中对我不起作用 我收到以下错误并且无法部署应用程序 Caused by javax management RuntimeOperationsExc
  • 从命令行运行 Maven 插件的语法是什么。

    我看到这里已经有人问过这个问题 如何从命令行执行maven插件 https stackoverflow com questions 12930656 how to execute maven plugin from command line
  • Selenium - 等待网络流量

    我们将 Selenium 与 Java API 和一些 Javascript 用户扩展一起使用 我们在应用程序中使用了大量 AJAX 调用 我们的许多测试随机失败 因为有时 AJAX 调用完成得比其他时候慢 因此页面未完全加载 我们通过等待
  • 将带有 webapp 的 WAR 部署到 Maven 中央存储库是否有意义?

    这样做有意义吗 如果是 我在哪里可以找到使用简单的 Web Hello World 执行此操作的示例 当人们从 Maven 执行 Web 应用程序时 他们会使用 Jetty 来运行它吗 我想 tomcat 太重了 任何帮助将不胜感激 谢谢
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co
  • Integer.parseInt 引发的 NumberFormatException

    嘿 我在学校上编码课 但老师没有很好地解释 所以我们必须在网上查找我所做的信息 但我无法找到代码中的错误 你能帮我吗 char end s do System out println Tipo de boleto char boleto c
  • 如何使用剪辑来减少绘画时间?

    我正在尝试使用 Clip 来减少 CPU 负载 但剪辑在屏幕上留下了一些我似乎无法摆脱的垃圾 另外 打开和关闭剪辑似乎对 CPU 负载没有影响 在任一情况下 大部分时间似乎都花在重绘管理器和绘制缓冲图像上 import static jav

随机推荐

  • PDFBox - 如果设置为只读,则不会显示复选框

    我正在使用 PDFBox 生成 PDF 我需要在其中添加一个复选框 该复选框需要预设为选中和只读 但有些怎么行不通 请找到下面的代码 它在 PDF 上添加了复选框 import java io File import java io IOE
  • 使用可以为空的列测试不等式

    所以 我问了一个question https stackoverflow com questions 1833949 why is null not equal to null false今天早上 我没有正确地表达 所以我收到了很多关于为什
  • Flask-admin:将 inline_models 渲染为列表视图?

    我有一个Motion模型有很多Votes 我将投票显示为inline model in flask admin 是否可以将选票呈现为表格 如list view模板 而不是像这样 使用 Flask admin 中的规则 您可以更改创建表单或编
  • 禁止用 ReplaceAll (/.) 进行替换

    来自 Mathematica 自己的文档 g 1 Hold g 1 g n gt n 1 leads to 2 Hold 1 1 我的问题 有没有办法保护子表达式不被 ReplaceAll 替换 我使用复合结构作为变量 例如 v a b 并
  • javascript电子邮件验证检查条件问题

    example
  • 如果数组中的所有值都相同,如何打印字符串

    我有一个保存数字的数组 int tarningar new int 5 当所有数字都相同时 我想打印 OK 例如与类似的东西system out println ok 我努力了if tarningar 1 tarningar 2 tarni
  • 使用 LINQ/扩展方法重复字符串[重复]

    这个问题在这里已经有答案了 只是我正在调查的好奇心 问题是 简单地重复 乘法 有人会说 字符串 字符n times 我知道有可枚举 重复为了这个目标 但我试图在没有它的情况下做到这一点 LINQ在这种情况下似乎毫无用处 因为在query l
  • 使用正则表达式提取文件名

    如果我只想匹配fileName i e in C Directory FileName cs 以某种方式忽略之前的一切FileName cs使用正则表达式 我该怎么做 我需要这个用于我正在开发的编译用户界面 无法使用编程语言 因为它只接受正
  • 如何修复 React Native 中的“找不到模块”.../template.config”错误

    我正在尝试使用 React Native 创建一个新应用程序react native init MyApp但我收到了这个错误 Downloading template Copying template error Error Cannot
  • UISearchbar 不区分大小写?

    在表视图中 我设置了 UISearchBar 设置委托并添加协议 当用户点击一个单词时 一切正常 除了 网球 的搜索与 网球 不同 如何使搜索栏成为不区分大小写的 UISearchBar 这是我的代码 我认为所有事情都会发生 void se
  • 在 Visual Studio 中使用 NumPy

    我下载了http pytools codeplex com http pytools codeplex com Visual Studio 的 Python 工具 以便我可以在 Visual Studio 中编写 Python 问题是当我尝
  • python 中文本的 n 元语法

    我之前的更新post https stackoverflow com questions 49064114 extracting n grams from tweets in python 进行一些更改 假设我有 100 条推文 在这些推文
  • Freemarker 内置换行功能

    在我的代码中 我使用 n 作为换行符 有人建议我需要避免 n 因为这对于不同的操作系统 UNIX Windows 和 MAC 来说是不同的 并且每个操作系统都会以不同的方式解释这个字符 虽然我看到了预期的行为 但任何人都可以建议 我们是否有
  • 使用 C# 解析 XLS 文件时出现问题

    好吧 让我们看看我是否能理解这一点 我写了一个程序来解析 Excel 文件 它运行得很好 我使用以下命令进入文件 string FileToConvert Server MapPath App Data CP ARFJN FLAG XLS
  • jquery-autocomplete 插件搜索

    有这个jquery 自动完成 https github com dyve jquery autocomplete插入 它允许您仅搜索确切的字符串 所以我们可以说这是数据 apple is good apple grows on tree t
  • 32 位和 64 位操作系统中的双字节大小

    有什么区别吗double http msdn microsoft com en us library system double aspx当我在 32 位和 64 位环境中运行我的应用程序时的大小 如果我没记错的话 32位环境中的doubl
  • 为多语言 ASP.NET MVC Web 应用程序设置 CurrentCulture 的最佳位置

    对于多语言 ASP NET MVC 3 Web 应用程序 我正在确定Thread CurrentThread CurrentCulture and Thread CurrentThread CurrentUICulture在控制器工厂上如下
  • 如何在 C++ (gcc) 中获得完全限定的函数名称,_排除_返回类型?

    这个问题 https stackoverflow com questions 6151558 displaying fully qualified name of the function描述了如何使用 PRETTY FUNCTION 获取
  • Django-taggit prefetch_相关

    我现在正在构建一个基本的时间记录应用程序 并且有一个使用 django taggit 的待办事项模型 我的 Todo 模型如下所示 class Todo models Model project models ForeignKey Proj
  • Maven 构建与依赖树不同

    我正在使用 Maven 3 构建一个具有 3 层的 java 应用程序 服务器 ejb 和 ui EJB项目依赖于Server项目 UI项目仅依赖于EJB 并为Server传递依赖提供排除 当 UI 项目构建为 war 时 服务器依赖项将被