zoukankan      html  css  js  c++  java
  • 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目录。如果不写的话,将在根目录下创建 targetlib 目录;

    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>

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

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

                   

  • 相关阅读:
    解题报告 校门外的树
    解题报告 最长上升子序列
    解题报告 poj 2528 (罕见的浮水法解这个题的。。。。。。)
    解题报告 整数划分
    悲剧的程序员
    解题报告 sgu 102
    NOI 2007 社交网络
    解题报告 poj 1087
    知识点梳理 离散化
    解题报告 noi 2002 robot
  • 原文地址:https://www.cnblogs.com/Darlin356230410/p/14930810.html
Copyright © 2011-2022 走看看