Maven中如何禁止插件(plugin)在子模块(module)上执行
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
在多模塊工程下,在父工程下執(zhí)行的插件默認(rèn)會(huì)在其所有的子模塊上也執(zhí)行一遍,大多數(shù)情況下這是合理的,比如像compiler這樣的插件,但是有時(shí)候也種行為可能并不是開發(fā)人員所期望的,比如使用exec插件調(diào)用一個(gè)外部腳本或命令,一般來說開發(fā)人員只希望在父工程下maven exec:exec來執(zhí)行一次該命令即可,但在多模塊下,你會(huì)發(fā)現(xiàn)這個(gè)同樣的命令被執(zhí)行了多次,多出來的執(zhí)行是在每個(gè)子模塊上執(zhí)行的,于是我們需要一種方法來禁用插件在子模塊上的執(zhí)行,一般來說兩個(gè)方法:
一:查閱插件的文檔,某些插件會(huì)主動(dòng)提供禁用配置,以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(注意命令行執(zhí)行的exectuion是default-cli)的phase設(shè)置為none,其實(shí)這是有點(diǎn)hack的做法,目地是將這個(gè)exection綁定到一個(gè)不存在的phase上,這樣它就永遠(yuǎn)不會(huì)被觸發(fā)執(zhí)行了。以jar插件為例:
另外,補(bǔ)充一點(diǎn):對于你exec這樣的插件,雖然插件被禁用了,但是maven的命令行還會(huì)輸出INFO信息告知某某模塊的exec被skip了,這些信息會(huì)干擾一個(gè)外部腳本或命令執(zhí)行的輸出,所以你可以在maven exec:exec的后面加上-q參數(shù)來disable maven的日志信息。
轉(zhuǎn)載于:https://my.oschina.net/pangzhuzhu/blog/327165
總結(jié)
以上是生活随笔為你收集整理的Maven中如何禁止插件(plugin)在子模块(module)上执行的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Scrapy -- 05
- 下一篇: 找出两个数组相同的元素