欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

maven项目中pom.xml的build中的plugin你真的是什么吗?都是干货

程序员文章站 2022-05-14 15:54:52
...

1.看一段pom.xml文件的build

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
  </parent>
 <build>
        <pluginManagement>
            <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.configserver2.configserver2.ConfigServer2Application</mainClass>
                </configuration>
            </plugin>
       

                <plugin>  
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    //指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 
                    <configuration>
                        <source>${java.version}</source> //源代码使用的JDK版本 -->
                        <target>${java.version}</target> //需要生成的目标class文件的编译版本 -
                        <skip>true</skip>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
                
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>1.4.3.RELEASE</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

2.pom文件分析

1.里面定义的是当前项目构建编译使用的插件,插件有很多种功能也不一样

		spring-boot-starter-parent里有一大堆spingboot自带plugins如:
		build-helper   clean   compiler  deploy help  install  jar resources  site  spring-boot  surefire  xml  等等。

2.plugin在父子工程间可以传递,可以在父工程中指定,子工程补充

3.先看spring-boot-maven-plugin这个构建插件的作用:

1.spring-boot-macen-plugin是在maven-compiler-plugin的基础上多了几个核心的goal
2. Spring Boot Maven plugin的5个Goal
				repackage:	默认goal。在mvn package之后,再次打包可执行的jar/war,同时保留mvn package生成的
									jar/war为.origin
				run:	运行Spring Boot应用
				start:	在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
				stop:	在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
				build-info:	生成Actuator使用的构建信息文件build-info.properties
3.当我们运行mvn -papckage或者直接点击idea的打包时,看看不同的配置发生了什么:
			<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>//打包后再编译,内置tomcat,生成可直接运行的jar包
                        </goals>
                    </execution>
                </executions>
                <configuration>
					<mainClass>com.configserver2.configserver2.ConfigServer2Application</mainClass>//指定当前项目的入口,如果不加;java -jar 运行时会报当前jar没有主清单属性  一般再spring-boot-starter-parent中已经配置
                </configuration>
            </plugin>
		如果在<goal>-中加repackage然后打包就会比不加多出这么个提示
		-- spring-boot-maven-plugin:2.1.8.RELEASE:repackage (default) @ config-server2 ---
		[INFO] Replacing main artifact with repackaged archive
		
		如果在<goal>中再加上run,那么打包完还没运行当前项目。