我是靠谱客的博主 难过丝袜,最近开发中收集的这篇文章主要介绍springboot集成java+groovy+lombok混合编程使用maven多模块打包实例springboot多模块打包实例,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
springboot多模块打包实例
由于在项目中引入了groovy编程,并且使用了lombok,在运行时没发现什么问题,但是最后打包部署时出现一系列问题。查了许久资料终于解决,特将解决方案写成文档记录一下
项目结构
upms-integrate 父模块
├─upms-base 公共模块
│
├─upms-web 管理后台-web
│
├─upms-generator 代码生成器
upms-admin模块依赖upms-base模块
maven打包各模块配置
- upms-integrate父模块
<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公共模块配置
<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模块
<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
<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多模块打包实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复