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,那么打包完还没运行当前项目。
上一篇: 你的代码真的很优雅嘛?