我是靠谱客的博主 难过丝袜,这篇文章主要介绍springboot集成java+groovy+lombok混合编程使用maven多模块打包实例springboot多模块打包实例,现在分享给大家,希望可以做个参考。

springboot多模块打包实例

由于在项目中引入了groovy编程,并且使用了lombok,在运行时没发现什么问题,但是最后打包部署时出现一系列问题。查了许久资料终于解决,特将解决方案写成文档记录一下

项目结构

复制代码
1
2
3
4
5
6
upms-integrate 父模块 ├─upms-base 公共模块 │ ├─upms-web 管理后台-web │ ├─upms-generator 代码生成器

upms-admin模块依赖upms-base模块

maven打包各模块配置

  • upms-integrate父模块
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<groupId>com.zz</groupId> <artifactId>upms-integrate</artifactId> <version>0.0.1-SNAPSHOT</version> <modules> <module>upms-base</module> <module>upms-web</module> <module>upms-generator</module> </modules> <!-- 父模块标识,不参与打包 --> <packaging>pom</packaging> . . . <!-- plugins;父模块不用引入spring-boot-maven-plugin 配置 -->
  • upms-base公共模块配置
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<parent> <artifactId>upms-integrate</artifactId> <groupId>com.zz</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>upms-base</artifactId> <!-- 标识为打成jar包 --> <packaging>jar</packaging> . . . <resources> <!-- 此处可以将mapper包下的.xml文件打到jar包中 --> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <!-- 此处因为使用了resources节点,导致maven不能自动加载resources文件夹资源文件, 所以需要手动配置才能打到jar包中,如果没有使用resources节点,那么此处不需要配置 --> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.tld</include> <include>**/*.cap</include> <include>**/*.txt</include> </includes> <excludes> <exclude>mybatis-generator/*.*</exclude> </excludes> <filtering>false</filtering> </resource> </resources> <!-- 注意,被别的模块引入的公共模块千万不要配置spring-boot-maven-plugin打包插件 否则打包时引用模块会抛出“The import XXX cannot be resolved”的异常 -->
  • upms-web模块
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<parent> <artifactId>upms-integrate</artifactId> <groupId>com.zz</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>upms-web</artifactId> <!-- 此处处决于你使用哪种方式部署项目,jar、war都可以 --> <packaging>jar</packaging> <name>upms-web</name> . . . <build> <finalName>upms</finalName> <resources> <resource> <!-- 解决字体下载失败的问题 --> <directory>src/main/resources</directory> <filtering>false</filtering> <excludes> <exclude>static/**</exclude> </excludes> <includes> <include>**</include> </includes> </resource> </resources> <plugins> <plugin> <!-- 项目入口所在模块需要配置打包插件 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>

各模块按以上配置后,即可使用mvn clean install/package 指令打包了。
也可以使用-pl upms-web指定打包模块,前提是要先把该模块依赖的所有子模块安装到本地或远程仓库

(重点)springboot在混合java+groovy编程并且使用lombok的情况下打包配置

java混合groovy打包需要使用groovy-eclipse-compiler插件,并且在引入了lombok的情况下又会有一些问题。
解决方法为:上述各模块配置不变,在父模块中增加以下配置

https://github.com/groovy/groovy-eclipse/wiki/Groovy-Eclipse-Maven-plugin

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <groovy.version>2.4.15</groovy.version> <lombok.version>1.16.18</lombok.version> <groovy.eclipse.compiler.version>2.9.2-01</groovy.eclipse.compiler.version> <groovy.eclipse.batch.version>2.4.3-01</groovy.eclipse.batch.version> </properties> <dependencies> <!-- 添加groovy支持,混合编程 --> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <classifier>indy</classifier> <version>${groovy.version}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.0</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <compilerId>groovy-eclipse-compiler</compilerId> <verbose>true</verbose> <!-- 不使用lombok的情况下可以去掉下面的配置 --> <compilerArguments> <!-- consult Lombok docs to confirm agent class name for yourversion --> <javaAgentClass>lombok.launch.Agent</javaAgentClass> </compilerArguments> <fork>true</fork> </configuration> <dependencies> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-eclipse-compiler</artifactId> <version>${groovy.eclipse.compiler.version}</version> </dependency> <!-- for 2.8.0-01 and later you must have an explicit dependencyon groovy-eclipse-batch --> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-eclipse-batch</artifactId> <version>${groovy.eclipse.batch.version}</version> </dependency> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-compiler-api</artifactId> <version>2.8.1</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> </dependencies> </plugin> </plugins> </build>

以上问题得到解决

maven打包异常

  • 无法解析lombok的@Data的注解。Groovy:unable to resolve class Delegate , unable to find class for annotation
    需要使用groovy-eclipse-compiler插件打包
  • The import XXX cannot be resolved
    被依赖的子模块使用了spring-boot-maven-plugin打包插件,导致引用模块无法发现公用模块的包文件

最后

以上就是难过丝袜最近收集整理的关于springboot集成java+groovy+lombok混合编程使用maven多模块打包实例springboot多模块打包实例的全部内容,更多相关springboot集成java+groovy+lombok混合编程使用maven多模块打包实例springboot多模块打包实例内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部