江湖救急,关于 maven 的使用问题

2019-08-26 14:18:03 +08:00
 SmallDream1995
一个多模块项目,子模块引用了一个外部 JAR 包,现在无法在 maven 打包的时候引入,百度了好久还是失败,也来不及去了解原理了。
<dependency>标签应该正确使用了,build 插件配置如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>${project.basedir}/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
</plugins>
</build>


<dependency>
<groupId>XXXX</groupId>
<artifactId>XXXXXXX</artifactId>
<version>X.0.5-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/XXXXXX.jar</systemPath>
</dependency>

然而实际运行的时候依然是 classNotFound,囧,没加载到,所以小弟很好奇,不知道是 build 插件写错了,还是在打包的时候只有主项目的 build 才生效呢。。。先谢过各位老哥们!!
4307 次点击
所在节点    Java
10 条回复
jsy123392550
2019-08-26 14:27:41 +08:00
sonyxperia
2019-08-26 14:32:22 +08:00
先 maven install 到仓库中?
Caballarii
2019-08-26 14:38:25 +08:00
搭个 nexus 好了
Aresxue
2019-08-26 15:03:24 +08:00
看看自己 maven 的版本,语法是否过期了。
ps: 更严谨的做法是 install 到自己的本地仓库中,不使用 scope 和 systemPath ;
真实工程中搭个 maven 私服吧,一个工程连自己的私服都没有也太磕碜了。
jorneyr
2019-08-26 15:08:45 +08:00
<scope>system</scope>
system 范围依赖与 provided 类似,但是你必须显式的提供一个对于本地系统中 JAR 文件的路径。
yzmm
2019-08-26 15:16:00 +08:00
如果你用 systemPath 配置不行的话建议你直接把 jar 添加到本地仓库就可以了。
mvn install:install-file 这个命令,你百度下吧
Hurriance
2019-08-26 17:28:06 +08:00
只是本地跑就安装到 maven 仓库里吧,R 楼上。
soulzz
2019-08-26 17:29:50 +08:00
一般情况下是父依赖没有 mvn install
Leiothrix
2019-08-26 17:38:20 +08:00
如果被依赖的项目是 spring boot 的可执行 jar 包,会出现这种情况,请将需要添加的公共类抽取到非执行 common 模块中,这是 spring boot 的一个坑。
fengpan567
2019-08-26 17:57:36 +08:00
systemPath 不行,可以自己本地 install 到 maven,我也碰到过,很玄学

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/595184

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX