JavaMaven:当shade将项目打包到jar时,如何删除本地重写类并使用依赖项中的原始类进行编译
我在spark库中创建了一个与B具有相同名称和包的类a,以便在本地运行spark程序时覆盖B,从而帮助我调试程序
我还需要将程序包装到一个jar中,并将其与依赖项一起上载到服务器,以便在集群中运行spark程序
问题是,每次我对程序进行shade打包时,我都需要先删除本地定义的类A,否则,当我在集群中运行shade打包的jar时,整个过程都会出现异常:
User class threw exception: java.lang.NoSuchMethodError: A.fun1.
下次我需要在本地调试程序时,我需要再次添加类A。这有点烦人
我想知道Maven是否可以帮助我在shape打包项目时删除本地重写类A并使用原始类B进行编译,同时仍然允许我在spark中使用本地类A重写类B在本地运行和调试程序
供参考:
- 我正在使用IntelliJ IDEA和maven 3李>
- 本地定义的类A和spark库中的类B具有完全相同的类名、包名、函数名和参数李>
我尝试了这个,但没有成功:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.4.3</version> <executions> <execution> <id>uber-jar</id> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <finalName>${project.artifactId}-${project.version}-jar-with-dependencies</finalName> <filters> <filter> <artifact>${project.groupId}:${project.artifactId}</artifact> <excludes> <exclude>package-of-classA/classA.*</include> </excludes> </filter> </filters> </configuration> </execution> </executions> </plugin>
和报告:
"User class threw exception: java.lang.NoSuchMethodError: A.fun1."
共 (0) 个答案