maven的package阶段调用maven-jar-plugin来生成jar,这个插件很简单,只会把源码生成的class打包到jar中,能够做为jar库来使用,不能使用java -jar命令执行。 有另外两个插件能够生成可执行的jar: maven-shade-plugin和maven-assembly-plugin. ##maven-shade-plugin 它用来生成可执行jar和源文件的jar(它是专业生成jar的插件),官方资料http://maven.apache.org/plugins/maven-shade-plugin/index.html。这个插件须要使用maven-jar-plugin生成的jar包,所以使用这个插件时,不能关闭maven-jar-plugin插件
基本用法以下:html
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.0.0</version> <executions> <execution> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <manifestEntries><!--生成manifest, key-value形式--> <Main-Class>test.child1.Main</Main-Class> <MyKey>myValue</MyKey><!--随便写--> </manifestEntries> </transformer> </transformers> </configuration> </execution> </executions> </plugin>
##maven-assembly-plugin 这个插件能够生成各类压缩包,jar也是压缩包的一种。示例以下java
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.4.1</version> <configuration> <appendAssemblyId>true</appendAssemblyId><!--若是为true,生成名jar文件的名字会很长,好比child1-1.0.0-jar-with-dependencies.jar,若是是false, 文件名相似于child1-1.0.0.jar--> <descriptorRefs><!--下面四个选项,根据须要选择--> <descriptorRef>jar-with-dependencies</descriptorRef><!--生成一个包含依赖库的jar--> <descriptorRef>src</descriptorRef><!--生成src的压缩包 --> <descriptorRef>project</descriptorRef><!--生成整个项目的压缩包--> <descriptorRef>bin</descriptorRef><!--生成jar的压缩包,又压了一次--> </descriptorRefs> <archive> <manifest> <mainClass>test.child1.Main</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>