文档章节

Maven中如何禁止插件(plugin)在子模块(module)上执行

猪刚烈
 猪刚烈
发布于 2014/10/12 11:47
字数 462
阅读 14
收藏 1

在多模块工程下,在父工程下执行的插件默认会在其所有的子模块上也执行一遍,大多数情况下这是合理的,比如像compiler这样的插件,但是有时候也种行为可能并不是开发人员所期望的,比如使用exec插件调用一个外部脚本或命令,一般来说开发人员只希望在父工程下maven exec:exec来执行一次该命令即可,但在多模块下,你会发现这个同样的命令被执行了多次,多出来的执行是在每个子模块上执行的,于是我们需要一种方法来禁用插件在子模块上的执行,一般来说两个方法:

一:查阅插件的文档,某些插件会主动提供禁用配置,以exec插件为例,如果子模块想禁用插件可以这样配置:

<!-- Disable plugin exec running on sub-modules -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>${exec.version}</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>

二:将指定的execution(注意命令行执行的exectuion是default-cli)的phase设置为none,其实这是有点hack的做法,目地是将这个exection绑定到一个不存在的phase上,这样它就永远不会被触发执行了。以jar插件为例:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>${jar.version}</version>
                <executions>
                    <execution>
                        <id>default-jar</id>
                        <phase>none</phase>
                    </execution>
                </executions>
            </plugin>


另外,补充一点:对于你exec这样的插件,虽然插件被禁用了,但是maven的命令行还会输出INFO信息告知某某模块的exec被skip了,这些信息会干扰一个外部脚本或命令执行的输出,所以你可以在maven exec:exec的后面加上-q参数来disable maven的日志信息。

本文转载自:http://blog.csdn.net/bluishglc/article/details/17191779

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
Maven 快速指南(二)

使用指导 如何添加外部依赖jar包 在Maven工程中添加依赖jar包,很简单,只要在POM文件中引入对应的标签即可。 参考下例: 标签最常用的四个属性标签: :项目组织唯一的标识符,实际对应JAV...

静默虚空
2017/11/10
0
0
maven + svn 配置

项目是多模块项目,目录结构是: parent --|module1 --|module2 目录是典型的上下包含,我在每个模块中都配置类似下面的SCM: scm:svn:${svn.host}/svn/project/trunk/module1/scm:svn:${sv...

周烈庆
2013/11/22
3.6K
2
(一)Maven详解之聚合与继承

说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现。 一、为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越...

飓风2000
2015/02/13
0
0
创建支持eclipse的多模块maven项目

通过maven可以创建多个关联模块的项目(Multiple Module Projects)。由一个总的模块,下面包含多个子模块(子模块还可以包含子模块)。这种maven功能能支持大型的项目构建,往往大型项目由很...

jiyong
2013/11/28
0
0
Maven 核心原理

标签 : Java基础 Maven 是每一位Java工程师每天都会接触的工具, 但据我所知其实很多人对Maven理解的并不深, 只把它当做一个依赖管理工具(下载依赖、打包), Maven很多核心的功能反而没用上....

hanqing280441589
2016/11/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周三乱弹 —— 我居然在 osc 里追剧

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @舆情风控小组 :分享王菲的单曲《笑忘书》 《笑忘书》- 王菲 手机党少年们想听歌,请使劲儿戳(这里) @艾尔库鲁斯:如果给大家一个选择的机...

小小编辑
36分钟前
45
4
rabbitMq的客户端使用笔记

1、channel声明队列的queueDeclare方法的参数解析 durable: 是否持久化, 队列的声明默认是存放到内存中的,如果rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang自...

DemonsI
44分钟前
0
0
“全新” 编程语言 Julia开箱体验

本文共 851字,阅读大约需要 3分钟 ! 概 述 Julia 是一个 “全新”的高性能动态编程语言,前两天迎来了其 1.0 正式版的重大更新。Julia集 Python、C、R、Ruby 之所长,感觉就像一种脚本语言...

CodeSheep
今天
11
0
软件自动化测试初学者忠告

题外话 测试入门 很多受过高等教育的大学生经常问要不要去报测试培训班来入门测试。 答案是否。 高等教育的合格毕业生要具备自学能力,如果你不具备自学能力,要好好地反省一下,为什么自己受...

python测试开发人工智能安全
今天
5
0
java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部