博客地址:http://149.129.91.8
idea打没有依赖jar包
1点击File-->Project Structure-->Artifacts 添加一个jar
2填写Module和Main class点击ok
3点击下一步(此时项目src会自动生成一个MATE-INF)
4点击Build-->Build Artifacts
5点击Build
6jar包位置
找到jar并执行
jar包结构
idea打有依赖jar包
重复上诉1-6步,需要注意的是,如果是maven项目,MATE-INF文件一定要指定生成在src下面,不然会找不到目录清单
找到jar并执行
jar包结构
maven打没有依赖jar包
pom文件中的packing改为jar,并配置build,最后点击package打包
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<mainClass>maven.no.dependence.Test</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
找到jar并执行
jar包结构
maven打有依赖jar包
总共有三种方式
一种方式:使用maven-jar-plugin和maven-dependency-plugin插件打包
<build>
<plugins>
<!--项目自身jar-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<!--去除MATE-INF下相关maven的文件-->
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<!--是否添加classpat-->
<addClasspath>true</addClasspath>
<!--classpath所指定的位置-->
<classpathPrefix>lib/</classpathPrefix>
<!--main方法入口-->
<mainClass>maven.dependence.Test</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!--项目所依赖jar包-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!--依赖包生成的位置-->
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
点击package打包
找到jar并运行
jar包结构
二种方式:使用maven-assembly-plugin插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version>
<configuration>
<archive>
<manifest>
<!--main方法入口-->
<mainClass>maven.dependence.Test</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
点击package打包,此时会生成两个jar包
maven-dependence-1.0-SNAPSHOT.jar
maven-dependence-1.0-SNAPSHOT-jar-with-dependencies.jar
第一个jar只有项目源码,没有依赖,不能直接启动
第二个jar有项目源码也有依赖源码,可以直接启动
启动第二个jar,jar包的目录结构和第一种方式的jar结构一样
三种方式:使用maven-shade-plugin插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<!--main方法入口-->
<mainClass>maven.dependence.Test</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
找到jar并启动,之后和方式1相同