为了清楚起见,您从多模块项目运行此命令时注意到了此行为:

mvn clean test

但是您将具有相同的行为,即:无需在运行任何阶段的情况下就将模块之间的依赖关系解析并可用,而无需事先将它们安装在本地存储库中,例如:

mvn test

mvn compile

mvn package

实际上,关于这一点的Maven文档并不明确.

The Reactor

The mechanism in Maven that handles multi-module projects is referred

to as the reactor. This part of the Maven core does the following:

Collects all the available modules to build

Sorts the projects into the correct build order

Builds the selected projects in order

您可以猜测,如果模块的顺序对于Maven构建很重要,则可能意味着模块的构建依赖于先前构建的相关模块的构建.这解释了如果您在< modules>中指定的顺序是由反应器完成的排序.就依赖关系而言是不正确的(正确的顺序是必须在用户依赖关系之前声明所使用的依赖关系).

当然,在某些用例中,您需要将Maven工件安装到本地存储库中,例如(并非详尽无遗):

>您不使用多模块项目

>整个多模块项目的构建很长.您只希望通过构建一些特定的工件来节省时间,因此无需构建多模块项目.

>多模块项目中包含的一个或几个模块由其他项目共享/使用.

通过使用-X标志(调试标志)执行maven build命令,您将看到Maven为每个模块构建计算模块之间的依赖关系.

例如,在您的示例中,您应该看到impl构建:

DEBUG] === PROJECT BUILD PLAN

================================================

[DEBUG] Project: A:impl:0.0.1-SNAPSHOT

[DEBUG] Dependencies (collect): []

[DEBUG] Dependencies (resolve): [compile, test]

稍后再检测模块间的依赖关系:

[DEBUG] A:impl:jar:0.0.1-SNAPSHOT

[DEBUG] A:api:jar:0.0.1-SNAPSHOT:compile

这是以下内容的更详细摘录:

[DEBUG] =======================================================================

[DEBUG] Dependency collection stats: {ConflictMarker.analyzeTime=23166, ConflictMarker.markTime=13490, ConflictMarker.nodeCount=2, ConflictIdSorter.graphTime=31377, ConflictIdSorter.topsortTime=6158, ConflictIdSorter.conflictIdCount=1, ConflictIdSorter.conflictIdCycleCount=0, ConflictResolver.totalTime=51611, ConflictResolver.conflictItemCount=1, DefaultDependencyCollector.collectTime=368903, DefaultDependencyCollector.transformTime=134014}

[DEBUG] A:impl:jar:0.0.1-SNAPSHOT

[DEBUG] A:api:jar:0.0.1-SNAPSHOT:compile

因此,在构建impl期间执行的插件还将具有一个类路径,其中包括api模块的已编译类.

例如,编译器插件执行的调试跟踪显示:

[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ impl ---

...

[DEBUG] (f) classpathElements = [C:\...\test-parent-pom\impl\target\classes, C:\...\test-parent-pom\api\target\classes]

java多站点项目_java-在多模块项目构建期间模块之间的Maven...相关推荐

  1. maven基础:mvn命令常用参数整理;如:-am构建指定模块,同时构建指定模块依赖的其他模块

    缩写 全名 说明 -h --help 显示帮助信息 -am --also-make 构建指定模块,同时构建指定模块依赖的其他模块 -amd --also-make-dependents 构建指定模块, ...

  2. java wrapper怎么运行_java wrapper方式部署项目

    java项目部署的方式多种多样,目前springboot框架下都是自带tomcat等服务运行环境的,也可以直接将编译包后的jar包解压后运行起来,今天要介绍的是用wrapper的方式部署项目,这种方式 ...

  3. java程序设计教程与项目_Java程序设计教程与项目实训

    书名:Java程序设计教程与项目实训 作者:温秀梅.司亚超 出版社:清华大学出版社 出版日期:2017/8/1 字数: 页数: 版次: ISBN:9787#302473701 定价:49.5 目录 章 ...

  4. java和opencv配置_Java——OpenCVWindows配置和项目中jar包的简单配置

    1. 安装OpenCV 1.1 下载相应的OpenCV版本,解压 1.2 将 openCV的dll文件(D:\InstallPackages\OpenCV\opencv\build\java\x64) ...

  5. 反射在java中的应用_java反射机制在项目中的运用

    定义:Reflection是java开发语言特性之一,它允许运行中的java程序对自身进行检测,自审,并能操作程序内部的属性和方法,Reflection是java被视为动态语言关键之一.允许程序从执行 ...

  6. java 反编译项目_Java 7 –反编译项目硬币

    java 反编译项目 大家好,该是从2012年开始写作的时候了.正如您在其他博客中可能已经看到的那样,有一些更改可以使您使用Java编程时的开发人员生活变得更加轻松:Diamond运算符,Switch ...

  7. java电商和企业项目_java电商和企业项目

    这里比较的都是国外的开源项目,备选项目有: Smilehouse Workspace.Pulse.Shopizer.ofbiz.bigfish.broadleaf1.Smilehouse Worksp ...

  8. java程序设计实训项目_Java程序设计教程与项目实训

    本书以现代教育理念为指导,在讲授方式上注意结合应用开发实例,注重培养学生理解面向对象程序设计思想,以提高分析问题和解决实际问题的能力.采用由浅入深.理论与实践相结合的教学思路,通过大量的实例阐述Jav ...

  9. java实现atm取款_java实现ATM取款项目

    项目要求: 1.用户需要从控制台输入账号密码,账号或者密码不正确报异常 2.每日取款的金额有限制(100,30000),否则报异常 3.每次取款都要有记录,并在下一次取款时显示出来 思路: 1.先在& ...

最新文章

  1. 直播回顾|结构光编码与三维重建技术
  2. Javascript字符串的格式化
  3. Eclipse之实用快捷键
  4. noip模拟赛 fateice-string
  5. 我在SharePoint行业的从业经历(一)
  6. SQL Server添加Northwind数据库
  7. Java输入/输出流(1)
  8. idea显示Multiple Spring Boot run configurations were detected. Services allows to manage multiple run
  9. 国内外CRM系统软件功能对比
  10. 笔记本电脑实现内外网双通成功经验分享(内网用有线,外网用无线)
  11. yolov7运行自己的VOC格式数据集
  12. 2023年软考高级系统分析师考试时间及安排
  13. Ubuntu折腾--优化wine 微信小黑框处理
  14. rpgmaker是c语言编程吗,一起学rpgmaker脚本(1)【程序猿都能看懂的RGSS入门'`,、('∀`) '`,、】...
  15. Axure教程:中继器如何加载显示图片
  16. 因为计算机x3daudio1_7.dll,x3daudio1_7.dll
  17. 腾讯移动安全实验室全年手机病毒行业报告
  18. 超图解python物联网实作入门_完美图解物联网IoT实作入门:使用JavaScript/Node.JS/Arduino/Raspberry Pi/ ESP8266/Espruino...
  19. 纯python+tk开发股票证券软件
  20. 2012年度十大杰出IT博客之 罗升阳

热门文章

  1. C++之lock_guard和unique_lock自动加解锁区别
  2. Android源码kernel编译
  3. ssh免密码登陆远程服务器(3种方式)
  4. Android.mk的一些FAQ
  5. Android对话框_详解
  6. android 5.1禁止休眠
  7. GPUimage 遇到的崩溃及问题
  8. grasshop 犀牛5.0下载_神契幻奇谭 v1.129版发布 快来下载神契幻奇谭2020最新官方版...
  9. linux 进程 异常日志,linux后台启动程序,处理nohup日志太大的问题
  10. jsp mysql论坛_体育论坛ssm,mysql)