一个项目下有多个 Spring Boot modules,且有依赖关系,如何打成 jar?

2017-11-02 10:19:57 +08:00
 ArthurKing
现在的一个项目,架构不知道谁搭的,这个就不吐槽了。
P 下有 modules(a,b,c,d)。每个 module 都是一个 Spirng Boot 的项目(指的是 a,b,c 都有一个类似结构的类。除类名外,均与以下代码一样
`
@SpringBootApplication
@EnableCaching
public class XXXBaseApplication {
}
`
)。modules c/d 均有引用 a 的代码,d 项目是主要开发项目,在 IDEA 中可以直接运行 d 项目。
现在的问题是,我想将 d 项目打成 jar 包。尝试在项目 p 下直接
`mvn package`,结果 a 报
`Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.5.4.RELEASE:repackage failed: Unable to find main class -> [Help 1]
`
在 a 的 Main 类中加入空的 main 方法(b/c 中也同样加入),a 可正常打包,c 打包失败,提示
`[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project c: Compilation failure
[ERROR] c/src/main/java/xx/XX.java:[8,27] 找不到符号
[ERROR] 符号: 类 BaseEntity
[ERROR] -> [Help 1]
`
其中的 BaseEntity 是 a 中的基类。

a pom
` <parent>
<groupId>xx</groupId>
<artifactId>p</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>apollo-login</artifactId>
<dependencies>
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
`


c pom


` <parent>
<groupId>xx</groupId>
<artifactId>p</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>c</artifactId>
<dependencies>
<dependency>
<groupId>xx</groupId>
<artifactId>a</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
</plugins>
</build>
`
d 的 pom 与 c 类似。
在 不大动 项目架构的前提下,如何能保证项目正常打包?
15950 次点击
所在节点    问与答
6 条回复
ArthurKing
2017-11-02 11:04:57 +08:00
顶一下
junneyang
2017-11-02 13:00:02 +08:00
直接在最上层构建就可以
可以参考:
https://github.com/junneyang/xxproject
ArthurKing
2017-11-02 13:36:01 +08:00
@junneyang #2 巧了,xxproject 我昨天就 clone 了大体看了下,这个项目的 modules 之间应该是没有依赖关系,跟我这个情况还不一样。谢谢
junneyang
2017-11-03 09:42:09 +08:00
module 之间依赖,需要引用对方类或者方法需要 自定义 starter
被依赖模块需要注册到 spring 中,启动时才会自动注入的
可以参考: http://blog.csdn.net/liuchuanhong1/article/details/55057135
ArthurKing
2017-11-03 16:16:11 +08:00
@junneyang #4 感谢
jack80342
2017-11-04 23:22:04 +08:00
这些天翻译了 Spring Boot 最新的官方文档,欢迎👏fork,https://www.gitbook.com/book/jack80342/spring-boot/details

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

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

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

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

© 2021 V2EX