小记:
主要是为了迎合公司微服务项目,同时是对已有技术的实践整理。
- 使用
spring-boot-maven-plugin构建构建jar包; - 使用
maven-surefire-plugin跳过测试类; - 使用
maven-antrun-plugin插件实现jar包的拷贝;
一、测试环境
springboot:1.5.6.RELEASE
springcloud:Edgware.SR3
eclipse:eclipse-jee-2018-09-win32-x86_64
jdk、maven环境
二、项目结构
sp-cloud
|-database //数据库对应版本脚本
|-v1.0
|-create_v1.0.sql
|-upgrade_v1.0.sql
|-sp_common //公共jar包、公共工具包
|-pom.xml
|-discovery //服务发现
|-pom.xml
|-config //配置中心
|-pom.xml
|-gateway //分发网关
|-pom.xml
|-gateway-api //rest api接入网关
|-pom.xml
|-components //具体的业务服务
|-service-a
|-pom.xml
|-service-b
|-pom.xml
|-service-c
|-pom.xml
...
|-pom.xml //parent pom
|-README.md //包含服务规划说明、安装部署等
三、parent pom配置
<build>
<plugins>
<plugin> <!-- 跳过测试 全局生效-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin> <!-- springboot maven构建插件 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</pluginManagement>
</build>
需要注意的是:使用spring-boot-maven-plugin构建时需要有main启动类,如果是以jar包的形式引用到组件项目中,使用原生的maven构建插件即可。
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
</plugins>
</build>
四、children pom配置
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<addResources>true</addResources>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<phase>compile</phase>
</execution>
</executions>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId> <!-- 拷贝插件 -->
<executions>
<execution>
<id>copy</id>
<phase>install</phase> <!-- maven生命周期 -->
<configuration>
<tasks> <!-- 其他语法自行百度maven-antrun-plugin插件的相关用法-->
<copy todir="${output.jar.directory}"> <!-- 文件将要输出目录 在parent pom中统一配置,此处引用即可-->
<fileset dir="${project.build.directory}"> <!-- 待拷贝文件的目录,默认目录在项目的target下-->
<include name="${project.artifactId}.jar" /> <!-- 待拷贝文件,可以使用下面的通配符,还可以是其他目录的文件。此处需要与project.bulid.finalName对应,否则可能找不到文件 -->
<!-- <include name="*.jar" /> -->
</fileset>
</copy>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
五、运行方式
- eclipse中maven构建,顶层父项目上右键运行即可,查看控制台即可。
- cmd 到项目的项目主目录下
mvn install
六、后记
- 公司的项目,很多其他的配置没有贴出来,见谅;
- 实际上目前这个项目已经过度到docker、docker-compose,后续抽时间会把这部分补上来;
- 以上的是在实际项目中使用的,单纯想把这些记录。如有错误的地方,欢迎各位共同探讨,烦请不吝赐教,共同进步;