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>

以上配置,会将项目中所依赖的配置文件,都写入到指定的路径中。

根据以上的配置,运行相应的插件,得到的大致如下:

 

 

 

 

 

 

 

               

 

posted @ 2021-06-25 14:36  D-Arlin  阅读(744)  评论(0编辑  收藏  举报