引言:
去查找这个问题,是因为在使用hudson的持续集成环境时,执行下面的命令:
mvn clean compile test sonar:sonar
总是会报,类似的工程依赖的错误:
1) com.alibaba.china.app:avatar.bundle.war:war:1.0-SNAPSHOT
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=com.alibaba.china.app -DartifactId=avatar.bundle.war -Dversion=1.0-SNAPSHOT -Dpackaging=war -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=com.alibaba.china.app -DartifactId=avatar.bundle.war -Dversion=1.0-SNAPSHOT -Dpackaging=war -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
Path to dependency:
1) com.alibaba.china.app:avatar.deploy:jar:1.0-SNAPSHOT
2) com.alibaba.china.app:avatar.bundle.war:war:1.0-SNAPSHOT
----------
1 required artifact is missing.
,原因分析:
由于hudson的持续集成环境是整个部门进行公用,而工程的特殊性是要依赖二方库,在不同的时间段编译时,不同的需求或者项目所依赖的同一个二方库可能是不一样的,但由于mvn中指定的版本是一样的(统一用了1.0-SNAPSHOT版本),导致了在某一个时刻,一些应用的持续集成是失败的。为了解决这个问题,当时是采用了在每次工程构建时,将二方库进行清理,再进行持续构建。但这样的做法,却导致了出现上面的问题。
因为deploy工程需要从mvn仓库中寻找bundle.war工程,而bundle.war工程却是需要通过mvn install 方式将包安装到mvn 仓库,将mvn 仓库清理后,bundle.war的war包自然也找不到了,所以depoloy构建时就报错了。
分析:
deploy工程在我们的应用中只是包含模板文件,部署的配置文件,是没有单元测试文件进行运行的。所以能否在构建时将指定的工程进行持续构建,不就解决了这个问题?
于是从网上搜索Maven指定工程进行编译、测试构建的方式,找到了
http;l://markmail.org/message/vf3qaxnjtxelj3b2这样的一篇文章,参照里面的配置在pom文件,增加profile,并使用-P 命令进行执行,但结果却不起作用。
执行了mvn -h,找到
-pl,--projects Build specified reactor projects instead of all projects
可以对指定工程进行操作。开始试验单个工程:
mvn test -pl biz/cases
发现命令行输出,只对biz/cases工程进行了单元测试,成功。
针对多个工程:
mvn test -pl biz/cases biz/common
结果并没有按照预期的两个工程进行单元测试,而是直接抛出了错误,提示Invalid task错误。
猜想应该是后面的多个工程的格式有问题,因为mvn对于空格之间的内容,是当作参数来进行执行。
尝试:
mvn test -pl biz/cases,biz/common
大功告成,OK。
后续的hudson配置就比较简单了,在工程配置界面里,填写的mvn命令下,增加-pl选项,将你想要执行构建的工程加上去,之后点击保存,再重新构建。如图:
- 大小: 15.7 KB
分享到:
相关推荐
第13章:使用Maven生成项目原型/13.2 编写自己的项目原型/13.2.6 按照项目原型生成Maven工程 第14章:灵活的构建/14.1 Maven的属性/14.1.1 概念 第14章:灵活的构建/14.1 Maven的属性/14.1.2 属性分类/14.1.2.1 内置...
自从Java诞生以来,打包,测试,代码检测和发布Java工程就成为困扰Java程序员的枷锁,即使Ant出现,程序员深受困扰,而且Ant的 Xml格式的Build文件的学习阶梯又给程序员加重了一层负担.程序员头顶上的天空依然阴霾,只到有...
Maven 构建SpringMVC项目学习笔记 一、背景介绍 二、构建工程 2.1、用maven插件构建项目框架 2.2、完善项目 2.3、将工程变成web工程 三、工程SpringMVC配置 3.1 赋予工程的springmvc特性 3.2、添加Maven依赖 四、...
Maven 是一个项目管理和整合工具。Maven 为开发者提供了一套完整的构建生命周期框架...因为大部分的工程配置操作都非常简单并且可复用,在创建报告、检查、构建和测试自动配置时,Maven 可以让开发者的工作变得更简单。
第一个Maven工程的目录结构和文件内容 · 10.联网问题 · 11.几个常用Maven命令 · 12.POM · 13.坐标 · 14.仓库 · 15.第二个Maven工程的目录结构和文件内容 · 16.依赖的基本操作 · 17.依赖的范围初步...
Maven多模块项目编译速度慢,下面我们来学习下优化的方法。 mvn clean package -T 4C -Dmaven.test.skip=true -Dmaven.compile.fork=true -T 4C 代表本机4个CPU内核都参与编译工程, -Dmaven.test.skip=true 代表...
在src和test都使用resources,方便构建和测试,这种方式本就已是前人的经验。通过使用Maven2,使这个经验在开发团队中得到普及。 创建标准目录模板,可以通过如下命令: mvn archetype:create -DgroupId=...
Maven是一个项目构建及管理工具,它大大简化了项目开发的流程,使开发团队能够更高效地自动完成工程的基础构建配置。Maven使用了一个标准的目录结构,这使得在不同开发工具中也能实现项目结构的统一。它提供了清理、...
一个maven工程都有一个pom.xml文件。通过pom.xml文件定义项目的坐标,项目的依赖,项目的信息 插件目标等 通过 maven 的依赖管理对项目所依赖的 jar 包进行统一管理。 比如:项目依赖 junit4.9,通过在 pom.xml 中...
Maven 是一个开源的项目管理和构建工具,可用于管理 Java 项目的依赖、编译源代码、运行测试和构建可执行文件等任务。 适用人群: 该资源适用于开发人员、软件工程师和项目经理等与 Java 开发相关的人群。无论是...
Maven是一个项目构建及管理工具,开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置, Maven 使用了一个标准的目录结构在不同开发工具中也能实现项目结构的统一。Maven提供了清理,编译,测试,安装,...
Maven基于项目对象模型(Project Object Model,POM)来管理项目,通过在项目根目录下的pom.xml文件中定义项目的结构、依赖、插件等信息,来指导Maven进行项目的构建和管理。 以下是Maven的一些主要特点和功能: ...
Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具 1、构建 Java 项目开发过程中,构建指的是使用 『原材料生产产品』 的过程。 原材料 Java 源代码 基于 HTML 的 Thymeleaf ...
对datasource进行自动化配置,给指定包下的每个mapper类生成masterMapper/slaveMapper两个对象. ### 3.kylin-log4j2 使用slfj日志,并且支持Sentry. ### 4.kylin-parent springboot项目parent ### 5.kylin-rabbitmq...
每日下班后,在构建服务器上每日从cvs上下载各个团队开发人员的代码,统一进行集成构建和测试。由于是每日构建,所以发现的bug可及时反馈给开发人员进行修正,避免了一般开发过程中的bug长时间遗留的情况
//1.1版本说明 增加了servlet-api的jar包,工程去掉了对本地tomcat的jar包的依赖 打包的时候,运行clean package ...此时能在eclipse中看mavencase-web的断点,但是service、dao、core中无法打断点,只能靠测试用例保证
开发团队基本不用花多少时间就能自动完成工程的基础构建配置,因为Maven使用了一个标准的目录结构和一个默认的构建生命周期。在创建报告、检查、构建和测试自动配置时,Maven可以让开发者的工作变得更简单
Hadoop MRUnit测试 工程用Maven构建,详细过程参见本人博客Maven构建一文
(四)使用maven镜像自动化构建Spring Boot项目 (五)使用ssh命令自动化部署 (六)使用Apifox进行自动化测试 (七)使用Jmeter进行自动化压测 (八)用nginx收集测试报告 (九)使用Sonar进行代码扫描
基于SSM(Spring+Springmvc+Mybatis)框架的电商小项目,使用Maven构建项目,MySQL为数据库系统,Redis的缓存服务器(并不是用的很多)。商城分为后台人员管理界面和前台处理服务器两个方面。实现了登录,邮件注册,...