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>

以上配置,會將項目中所依賴的配置文件,都寫入到指定的路徑中。

根據以上的配置,運行相應的插件,得到的大致如下:

 

 

 

 

 

 

 

               

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM