使用maven构建jar包并拷贝到指定目录

小记:

主要是为了迎合公司微服务项目,同时是对已有技术的实践整理。java

  1. 使用spring-boot-maven-plugin构建构建jar包;
  2. 使用maven-surefire-plugin跳过测试类;
  3. 使用maven-antrun-plugin插件实现jar包的拷贝;
1、测试环境
springboot:1.5.6.RELEASE
springcloud:Edgware.SR3
eclipse:eclipse-jee-2018-09-win32-x86_64

jdk、maven环境
在这里插入图片描述web

2、项目结构
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				//包含服务规划说明、安装部署等
3、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构建插件便可。spring

<build>
	<finalName>${project.artifactId}</finalName>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-jar-plugin</artifactId>
		</plugin>
	</plugins>
</build>
4、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>
5、运行方式
  1. eclipse中maven构建,顶层父项目上右键运行便可,查看控制台便可。
    在这里插入图片描述
  2. cmd 到项目的项目主目录下
mvn install

在这里插入图片描述

6、后记
  1. 公司的项目,不少其余的配置没有贴出来,见谅;
  2. 实际上目前这个项目已通过度到docker、docker-compose,后续抽时间会把这部分补上来;
  3. 以上的是在实际项目中使用的,单纯想把这些记录。若有错误的地方,欢迎各位共同探讨,烦请不吝赐教,共同进步;
    在这里插入图片描述