maven将所有的依赖打成一个包

跑mapreduce实验的时候发现,总是报错CLASSNOTFOUND,找不到一个第三方jar包的类,即使在hadoop-env.sh添加HADOOP_CLASS时,还是会同样的错误。于是想到将依赖的包和自己的class文件打成一个包,避免找不到类(前提是maven中已经添加了依赖)。
在pom.xml中添加

<build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <!--这里要替换成jar包main方法所在类 -->
                            <mainClass>InvertedIndex2</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
                        <phase>package</phase> <!-- 指定在打包节点执行jar包合并操作 -->
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

运行mvn package后发现target目录下存在两个文件,其中 *-with-dependencies.jar包含依赖的jar里面的文件和自己的class文件。

猜你喜欢

转载自blog.csdn.net/nice_wen/article/details/78471120