springBoot子项目中排除掉定义在Parent中的插件(Disable a Maven plugin defined in a parent POM)

1 篇文章 0 订阅
1 篇文章 0 订阅

最近在和别的项目集成,需要在我们的pom中添加上对方的parent,打包的时候就遇到了问题,对方在parent中添加了一个插件,干啥的就不说了, 反正人家是用到了, 我们是用不到,但是还给我们打包带来了一些问题。

这时候就必须排除掉对方这个插件了
1,第一种方法是 有的插件提供了不加载配置,例如:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-xxx-plugin</artifactId>
	<version>2.11</version>
	<configuration>
		<skip>true</skip>
	</configuration>
</plugin>

如果不想用这个插件,就把skip标签配置成true,这样在构建的时候就不会使用这个插件了。

可是有的插件并没有提供这样的配置,对方项目里的这个插件正好就没有提供这个配置。真的是:
在这里插入图片描述
然后只能另寻他法。

2,后来又找到一种方法,就是在子项目的pom里添加一个插件,覆盖掉parent中的插件,子项目插件的execution中phase设置为none,例如:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-xxx-plugin</artifactId>
	<version>2.11</version>
	<executions>
        <execution>
            <id>这里是parent里的插件id</id>
            <phase>none</phase>
        </execution>
    </executions>
</plugin>

这样插件在执行时,就会执行一个空的目标。
感觉找到了可行的方法。
兴致冲冲的打开对方的parent, 然后发现对象的插件没有设置id
我。。。。
在这里插入图片描述
本来以为柳暗花明,谁知道是一条死路。不过如果parent中的插件有id的话,这种方法还是可行的。

3,只能再次上路,路漫漫其修远兮,发现网上这样的搜索和资料并不多,看来遇到这样问题的问不是很多呀。

在stackOverflow上看到有讨论的帖子,也是几年前的了。研究了一番,最后是这样解决的:
和上面差不多,都是覆盖parent中的插件,如果parent中的插件没有id,先加一个空的execution, 执行phase为空, 然后再加一个自己的execution,需要有自己的id ,如下

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-xxx-plugin</artifactId>
	<version>2.11</version>
	<executions>
		<!--加一个execution , phase设置成空-->
		<execution>
			<phase/>
		</execution>
		<!--加一个有自己id的execution,id随便,其余可以不写-->
		<execution>
			<id>myid</id>
		</execution>
	</executions>
</plugin>

这样插件再执行的时候就去只要myid了,但是myid什么都没有,使它空欢喜一场。

最终打包成功。
在这里插入图片描述

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值