问题:在maven父子工程中,多模块间同时引用了本地jar包,如何打包?
网上看了很多关于本地打jar包的方法,但都没有关于父子工程以及多模块依赖的jar包,先将项目结构贴出来
两个模块同时依赖本地jar包,而web模块为需要打成的war包并且以es模块为依赖,此时,两个模块都需要对本地jar包进行打包
,其中打成war包的模块为:
1.添加pom文件本地jar包打包插件
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>compile</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory>
<includeScope>system</includeScope>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
其中,outputDirecotry为war包的jar包目录,不能错
2.在pom文件中添加本地jar包的依赖
<dependency>
<groupId>bluethink</groupId>
<artifactId>onegis.core</artifactId>
<version>0.1.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/onegis.core.jar</systemPath>
</dependency>
<dependency>
<groupId>bluethink</groupId>
<artifactId>onegis.base</artifactId>
<version>0.1.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/onegis.base.jar</systemPath>
</dependency>
其中,systemPath路径为你lib所在项目的路径,一定要注意,{basedir}即为项目根路径
3.同样的方式在其他所依赖的模块中加入本地jar包的依赖
最后打包测试,遇到一个问题:
Maven抛出NoGoalSpecifiedException异常
在pom文件中的build内容中增加:
<build>
<defaultGoal>compile</defaultGoal>
</build>
测试成功,打包效果: