一、用maven-shade-plugin打包
在pom.xml文件中加入如下信息,利用Maven的maven-shade-plugin插件進行打包。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <!-- 程序主入口 --> <mainClass>net.test.HelloWorld</mainClass> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
其中<mainClass>net.test.HelloWorld</mainClass>標簽中配置的是項目程序的主入口,加入插件信息后的最終pom.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>testDemo</groupId> <artifactId>HelloWorld</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <name>HelloWorld</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <!-- 程序主入口 --> <mainClass>net.test.HelloWorld</mainClass> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>com.googlecode.log4jdbc</groupId> <artifactId>log4jdbc</artifactId> <version>1.2</version> <scope>runtime</scope> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version>4.0</version> </dependency> <dependency> <groupId>oracle</groupId> <artifactId>ojdbc7</artifactId> <version>12.1.0.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.39</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.20.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.20.RELEASE</version> </dependency> <dependency> <groupId>javax.transaction</groupId> <artifactId>javax.transaction-api</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.0.1</version> </dependency> </dependencies> </project>
然后就可以執行以下Maven命令進行打包了:
mvn clean compile //清除之前target編譯文件並重新編譯 mvn clean package //對項目進行打包(因為配置過插件,所以jar包是可執行的) mvn clean install //安裝項目,然后就可以使用了
也可以使用IDEA自帶的maven管理工具代替執行上面的命令,如下圖所示,依次點擊藍色的部分即可打包成功:
測試:
打好包后,找到jar包位置,在jar包所在文件夾空白處 Shift + 右擊——在此處打開命令窗口,通過 java -jar 包名.jar 命令即可運行,如下圖所示:
即將Maven項目打包為cmd可執行jar成功!
二、用maven-assembly-plugin打包
在pom.xml文件中加入如下信息,利用Maven的maven-assembly-plugin插件進行打包。
<plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.4</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>net.test.HelloWorld</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
其中<mainClass>net.test.HelloWorld</mainClass>標簽中配置的是項目程序的主入口,然后就可以執行以下Maven命令進行打包了:
mvn assembly:assembly
也可以使用IDEA自帶的maven管理工具代替執行上面的命令:
測試如上!!!
注:
成功后的jar包中META-INF 目錄中的 MANIFEST.MF,內容如下(下列屬性冒號后有一空格):
Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Built-By: BigBoss Created-By: Apache Maven 3.3.9 Build-Jdk: 1.8.0_131 Main-Class: net.test.HelloWorld
創建bat命令文件運行打好的可執行jar包方法:https://www.cnblogs.com/Big-Boss/p/11328723.html