背景
我的项目打包配成了项目代码单独jar包,依赖的jar包使用copy-dependencies复制到指定libs目录。但是本地jar包没法复制,研究了下,使用下面方法即可,亲测可用。
开发配置
在需要使用三方jar包的模块,pom文件中配置如下:
<dependency>
<groupId>com.my.abc/groupId> <!--自定义-->
<artifactId>sdk</artifactId> <!--自定义-->
<version>1.0</version> <!--自定义-->
<scope>system</scope> <!--system,类似provided,需要显式提供依赖的jar以后,Maven就不会在Repository中查找它-->
<systemPath>${pom.basedir}/libs/my-customer1.jar</systemPath> <!--不能使用父项目的路径-->
</dependency>
打包配置
具体打包模块的pom的< build >中配置:
方式一:
<resources>
<!-- 复制本地扩展jar包到libs目录 -->
<resource>
<directory>../moduleA/libs</directory><!-- 要复制的moduleA模块libs目录下的jar包 -->
<targetPath>${project.build.directory}/libs</targetPath><!-- 复制到本模块打包目录的libs目录 -->
<includes>
<include>**/*.jar</include>
</includes>
</resource>
<!--定义了上面的resource, 要想默认的src/main/resources目录生效, 必须显式额外增加下面的配置-->
<resource>
<directory>src/main/resources</directory>
<!-- 表示是否对配置文件中的${}占位符进行解析替换-->
<filtering>false</filtering>
</resource>
</resources>
方式二:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<configuration>
<target name="copy">
<copy todir="${project.build.directory}/libs"> <!-- 复制到本模块打包目录的libs目录 -->
<fileset dir="../moduleA/libs"> <!-- 要复制的moduleA模块libs目录下的jar包 -->
<include name="*.jar"/>
</fileset>
</copy>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>