您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了shade如何解決mybatis包沖突問題,內(nèi)容簡(jiǎn)而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會(huì)有收獲的,下面讓小編帶大家一起來(lái)看看吧。
目前有一個(gè)項(xiàng)目,A是第三方應(yīng)用,代碼不公開,不能修改,使用的是mybatis plugs3.3.1,而當(dāng)前項(xiàng)目是我們自己的B,它需要用到A里的方法,B里mybatis plugs版本是2.3,目前在使用過程中出現(xiàn)了問題,這兩個(gè)版本的有些方法,注解都發(fā)生了很大的變化 :
mybatis 3.x BaseMapper注解的位置:import com.baomidou.mybatisplus.core.mapper.BaseMapper;
mybatis 2.x BaseMapper注解的位置:import com.baomidou.mybatisplus.mapper.BaseMapper;
這兩個(gè)版本對(duì)于很多注解,接口,方法,類都是不同的,兩個(gè)版本無(wú)法兼容,當(dāng)我們項(xiàng)目引用A項(xiàng)目之后,就出現(xiàn)A版本里使用mybatis的一些錯(cuò)誤,就是方法,類未找到的錯(cuò)誤。
shade插件進(jìn)行解決
我們需要引用a-shade這個(gè)項(xiàng)目,它來(lái)依賴a,然后在它里使用shade插件對(duì)a里的mybatis進(jìn)行重命名,再由b直接引用a-shade,這時(shí) a里的方法也就有了,并且引用了mybatis的地方都換成了shade開頭的包了
graph TDa(mybatis2.3)-->b(我們的項(xiàng)目)c(mybatis3.3.1)-->d(第三方項(xiàng)目)d-->f(對(duì)第三方項(xiàng)目進(jìn)行shade)
實(shí)現(xiàn)圖
graph TDA(第三方項(xiàng)目)-->B(A-shade繼承A并且重寫mybatis)B-->C(我們自己的項(xiàng)目)
a-shade.jar反編譯之后
a-shade項(xiàng)目的shade代碼
<artifactId>a-service-shade</artifactId> <dependencies> <dependency> <groupId>com.lind</groupId> <artifactId>a-service</artifactId> <version>1.0.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <!-- 不生成dependency-reduced-pom.xml--> <createDependencyReducedPom>false</createDependencyReducedPom> <relocations> <relocation> <pattern>com.baomidou</pattern> <shadedPattern>shade.com.baomidou</shadedPattern> </relocation> </relocations> </configuration> </execution> </executions> </plugin> </plugins> </build>
引用a-shade
打包發(fā)布后,B項(xiàng)目直接使用a-shade這個(gè)包即可,其它代碼不需要修改
<dependency> <groupId>com.lind</groupId> <artifactId>a-shade</artifactId> <version>1.0.1</version> </dependency>
以上就是關(guān)于shade如何解決mybatis包沖突問題的內(nèi)容,如果你們有學(xué)習(xí)到知識(shí)或者技能,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。