导言:我们一般java工程都是通过Maven来管理构建的,要使用的时候就使用了jar形式,而我们知道其中有很多的依赖,而Maven本身的打包成jar是不包含这些依赖的,我们可以在pom.xml中配置maven-assembly-plugin来实现依赖打包;
一、Maven 的maven-assembly-plugin的配置
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<encoding>UTF-8</encoding>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.cloudera.test.UserTest</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
其中<mainClass></mainClass>的值表示此工程的入口类,也就是包含main方法的类,在我的例子中就是com.cloudera.test.UserTest。配置完pom后可以通过执行mvn assembly:assembly命令来启动插件进行构建。构建成功后会生成jar包,这样我们就可以在命令行中通过java -jar XXX.jar来运行jar件了。 关于此问题报错的原因,我在网上找到一篇文章对此有比较详细的解点击打开链接;
2.得到的结果是UserTest.jar和UserTest-jar-with-dependences的一个含依赖,一个不含依赖的jar。而喊依赖的就是我们需要;