maven插件

Il n'ya qu'un héroïsme au monde : c'est de voir le monde tel qu'il est et de l'aimer

Posted by Lydia on March 1, 2020

maven插件是在生命周期中某些阶段执行的任务,一个插件完成一项功能。

plugin function
maven-jar-plugin maven 默认打包插件,用来创建 project jar
maven-shade-plugin 用来打可执行包,executable(fat) jar
maven-assembly-plugin 支持定制化打包方式,例如 apache 项目的打包方式

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>

或者在properties设置jdk版本

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
 </properties>

maven-jar-plugin

打成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包里。 与assembly类似,使用assembly即可。

maven-assembly-plugin

<build>
	<finalName>basic-example-plugin-test</finalName>
	<plugins>
	    <plugin>
	        <artifactId>maven-assembly-plugin</artifactId>
	        <configuration>
	            <appendAssemblyId>false</appendAssemblyId>
	            <descriptorRefs>
	            <descriptorRef>jar-with-dependencies</descriptorRef>
	            </descriptorRefs>
	            <archive>
	                <manifest>
	                    <!-- 此处指定main方法入口的class -->
	                    <mainClass>com.basic.example.plugin.lydia.DefinePlugin</mainClass>
	                </manifest>
	                <manifestEntries>
	                    <Plugin-Id>${plugin.id}</Plugin-Id>
	                    <Plugin-Version>${plugin.version}</Plugin-Version>
	                    <Plugin-Provider>${plugin.provider}</Plugin-Provider>
	                    <Plugin-Class>${plugin.class}</Plugin-Class>
	                </manifestEntries>
	            </archive>
	        </configuration>
	        <executions>
	            <execution>
	                <id>make-assembly</id>
	                <phase>package</phase> <!-- 绑定package生命周期 -->
	                <goals>
	                    <goal>single</goal> <!-- 只运行一次 -->
	                </goals>
	            </execution>
	        </executions>
	    </plugin>
	</plugins>
</build>

参考文档

maven–插件篇(assembly插件)

未完待续…

未完待续