maven-外掛
阿新 • • 發佈:2020-08-11
maven外掛是在生命週期中某些階段執行的任務。一個外掛完成一項功能。
1. maven-compiler-plugin
2. maven-jar-plugin
3. maven-shade-plugin
4. maven-assembly-plugin
5. spring-boot-maven-plugin
maven-compiler-plugin
編譯Java原始碼,一般只需設定編譯的jdk版本
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>
maven-jar-plugin
maven 預設打包外掛,用來建立 project jar。
打成jar時,設定manifest的引數,比如指定執行的Main class,還有依賴的jar包,加入classpath中。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>/data/lib</classpathPrefix> <mainClass>com.zhang.spring.App</mainClass> </manifest> </archive> </configuration> </plugin>
maven-shade-plugin
用於把多個jar包,打成1個jar包,一般Java專案都會依賴其他第三方jar包,最終打包時,希望把其他jar包包含在一個jar包裡。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.1.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.test.WordCount</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin>
maven-assembly-plugin
定製化打包方式。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <!-- 繫結到package生命週期階段上 --> <phase>package</phase> <goals> <!-- 只執行一次 --> <goal>single</goal> </goals> <configuration> <finalName>${assembly.name}</finalName> <!--false 打包檔案末尾不包含assembly id--> <appendAssemblyId>false</appendAssemblyId> <descriptors> <!--配置描述檔案路徑--> <descriptor>assembly.xml</descriptor> </descriptors> <outputDirectory>${project.parent.basedir}/dist</outputDirectory> </configuration> </execution> </executions> </plugin>
assembly.xml:
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd"> <id>${project.version}</id> <formats> <format>tgz</format> </formats> <!--預設值是:true。 設定為true將建立一個包含此基本目錄的歸檔檔案。 /libra-service-1.1.0/libra-service-1.1.0 設定為false,則建立的存檔將其內容解壓縮到當前目錄。 /libra-service-1.1.0 --> <includeBaseDirectory>false</includeBaseDirectory> <!-- libra-service-1.1.0 (libra-service-1.1.0.tgz) conf: conf下面所有檔案 jars: libra-service-1.1.0.jar libra-dps.jar sbin: sbin下面所有檔案 --> <!--指定包含在程式集中的每個包含模組的哪些檔案組。fileSet通過提供一個或多個<fileSet>子元素來指定。--> <fileSets> <fileSet> <!--設定模組目錄的絕對或相對位置。--> <directory>${project.parent.basedir}/libra-dps/target</directory> <!--設定輸出目錄相對於程式集根目錄的根目錄。--> <outputDirectory>${assembly.name}/jars</outputDirectory> <includes> <include>libra*.jar</include> </includes> </fileSet> <fileSet> <directory>${project.parent.basedir}/libra-service/target</directory> <outputDirectory>${assembly.name}/jars</outputDirectory> <includes> <include>libra*.jar</include> </includes> </fileSet> <fileSet> <directory>${project.parent.basedir}/sbin</directory> <outputDirectory>${assembly.name}/sbin</outputDirectory> <includes> <include>*</include> </includes> </fileSet> <fileSet> <directory>${project.parent.basedir}/conf</directory> <outputDirectory>${assembly.name}/conf</outputDirectory> <includes> <include>*</include> <include>*/*</include> </includes> </fileSet> </fileSets> </assembly>
這裡指定將兩個jar包, sbin資料夾, conf資料夾打包生成在libra-service-1.1.0.tgz
spring-boot-maven-plugin
spring-boot-maven-plugin外掛是將springboot的應用程式打包成fat jar的外掛。
我們一般的jar,裡面放的是.class檔案已經resources目錄下的東西,但是fat jar 它可以把jar作為內容包含進去。也就是說,spring boot 藉助spring-boot-maven-plugin將所有應用啟動執行所需要的jar都包含進來,從邏輯上將具備了獨立執行的條件。
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${springboot.verison}</version> <configuration> <mainClass>com.ultiwill.libra.Application</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>