一、背景(Maven打包存在的问题)
Maven默认打包后,jar文件都是生成在各自服务的target下,对微服务的部署不太友好,需要整个项目上传服务器,里面包含了源码
二、如何解决以上问题?
其实可以在打包时把所需jar包复制到指定的目录
具体思路:打包时复制jar包到指定文件目录,以下是具体的做法
2.1 步骤1 父级POM修改
在父级POM配置中加入
<properties>
<!--打包配置-->
<copy>true</copy>
<localDir>D:/demo-jar</localDir>
......
</properties>
2.2 步骤2 子级POM修改
在各个module项目中pom中配置
<!--打包时复制jar包到指定文件目录-->
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>copy</id><!--需要唯一-->
<phase>package</phase><!--当执行package操作时执行一下任务-->
<configuration>
<tasks><!--任务-->
<echo message="start.................................."/><!--打印-->
<echo message="load maven plugin ant-contrib-1.0b3"/>
<!--加载plugin ant-contrib的配置文件-->
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath><!--加载jar包,${settings.localRepository}的值是你maven settings文件中配置的本地仓库位置-->
<pathelement
location="${settings.localRepository}/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>
<!--复制jar包-->
<if>
<equals arg1="${copy}" arg2="true"/><!--是否复制jar包-->
<then>
<echo message="Copy jar to your desired path."/>
<copy todir="${localDir}"
overwrite="true"><!--执行复制操作,todir的值是将要复制jar包到的地方,overwrite是否重写-->
<fileset
dir="${project.build.directory}"><!--${project.build.directory}值是你的target目录-->
<include name="*.jar"/><!--target目录下的jar包-->
</fileset>
</copy>
</then>
</if>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
三、结果验证
配完以上代码后,执行mvn clean install
,部署所需的jar文件就都在D:/demo-jar下了