1. 程式人生 > 其它 >maven打包外掛

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>

以上配置,會將專案中所依賴的配置檔案,都寫入到指定的路徑中。

根據以上的配置,執行相應的外掛,得到的大致如下: