maven打包插件
打包成可执行的jar
<!-- 可执行jar插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <!--这些配置将写入到MANIFEST.MF文件中--> <archive> <!--指定程序入口--> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.demo.test</mainClass> </manifest> <!-- (配置文件外置目录) --> <manifestEntries> <Class-Path>config/</Class-Path> </manifestEntries> </archive> <excludes> <exclude>**/*.xml</exclude> <exclude>**/*.conf</exclude> <exclude>**/*.properties</exclude> <exclude>**/*/*.json</exclude> </excludes> </configuration> </plugin>
以上配置,生成jar包里的MANIFEST.MF文件大致内容如下:
Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Built-By: Class-Path: config/ lib/ Created-By: Apache Maven 3.8.1 Build-Jdk: 1.8.0_181 Main-Class: com.demo.test
Manifest-Version:用来定义manifest文件的版本,例如:Manifest-Version: 1.0
Archiver-Version:详见 http://codehaus-plexus.github.io/plexus-archiver/
Built-By:构建者
Class-Path:应用程序或者类装载器使用该值来构建内部的类搜索路径
Created-By:声明该文件的生成者,一般该属性是由jar命令行工具生成的,例如:Created-By: Apache Maven 3.8.1
Build-Jdk:构建的JDK版本
Main-Class:定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 java -jar x.jar来运行该jar文件
<!-- 依赖包插件 --> <plugin> <!--mvn dependency:copy-dependencies--> <artifactId>maven-dependency-plugin</artifactId> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <excludeTransitive>false</excludeTransitive> <stripVersion>false</stripVersion> </configuration> </plugin>
其中:
outputDirectory:${project.build.directory}是maven变量,表示target目录。如果不写的话,将在根目录下创建 target\lib 目录;
excludeTransitive:是否不包含间接依赖的包;
stripVersion:复制的jar文件去掉版本信息;
以上配置,会将项目中所有依赖的jar,都放到指定的目录中。
<!-- maven资源文件复制插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.6</version> <executions> <execution> <id>copy-config</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/config</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <includes> <exclude>**/*.xml</exclude> <exclude>**/*.conf</exclude> <exclude>**/*.properties</exclude> </includes> <filtering>true</filtering> </resource> </resources> <encoding>UTF-8</encoding> </configuration> </execution> </executions> </plugin>
以上配置,会将项目中所依赖的配置文件,都写入到指定的路径中。
根据以上的配置,运行相应的插件,得到的大致如下: