1.直接打包
通过==不打依赖包==的方式,仅仅只是打包出项目中的代码到JAR包中。在POM文件合适的位置添加如下plugin即可,随后执行maven install
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
2.将依赖JAR包输出到lib目录方式
将项目中的JAR包的依赖包输出到指定的目录下,修改==outputDirectory==配置,如下面的${project.build.directory}/lib.如想将打包好的JAR包可以通过==命令==直接运行,如java -jar xx.jar,还需要==制定mainfest配置==的classpathPrefix与上面配置的相对应,如上面把依赖JAR包输出到了lib,所以这里的classpathPrefix也应该指定为lib/; 同时,并制定出程序的入口类,在配置mainClass节点中配置好入口类的全类名。这种打包方式对于JAVA项目是通用的,不管是不是springboot项目还是普通的JAVA项目,都ok。
<plugins>
<!-- java编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.yourpakagename.mainClassName</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
有时候为了方便,可以把classpath初始化在当前目录上,默认的classpath会在jar包内,可以在main方法配置后加上manifestEntries配置,指定classpath,如
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classesDirectory>target/classes/</classesDirectory>
<archive>
<manifest>
<!-- 主函数的入口 -->
<mainClass>com.yourpakagename.mainClassName</mainClass>
<!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
<useUniqueVersions>false</useUniqueVersions>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
3.将项目依赖包和项目打为一个包
这种方式打包会将项目中的依赖包和项目的代码都打在一个jar包,配置如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version>
<configuration>
<archive>
<manifest>
<mainClass>com.xxg.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
但是这种方式只能打java项目,如果是spring框架的jar就不可以了,而应该使用如下配置
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
如果项目中包含groovy代码,默认采用MAVEN打包时不会将groovy代码进行打包,需要加入如下配置
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<goals>
<goal>addSources</goal>
<goal>addStubSources</goal>
<goal>compile</goal>
<goal>execute</goal>
</goals>
</execution>
</executions>
</plugin>