maven打包外掛
阿新 • • 發佈:2021-06-25
打包成可執行的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>
以上配置,會將專案中所依賴的配置檔案,都寫入到指定的路徑中。
根據以上的配置,執行相應的外掛,得到的大致如下: