maven项目中pom.xml的build中的plugin你真的了解过吗?都是干货

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>
		如果在-中加repackage然后打包就会比不加多出这么个提示
		-- spring-boot-maven-plugin:2.1.8.RELEASE:repackage (default) @ config-server2 ---
		[INFO] Replacing main artifact with repackaged archive
		
		如果在中再加上run,那么打包完还没运行当前项目。

你可能感兴趣的:(maven)