[求助] 使用 Jenkins 部署 GitHub 的 SpringBoot 项目出现 lombok 找不到包

2018-12-11 01:06:25 +08:00
 aatao

配置的环境是 jdk1.8,本地代码调试编译运行都没问题 但是通过自己的服务器配置的 Jenkins 拉去代码进行 install 的时候一直提示 lombok 相关包找不到 (错误信息在下面有贴出)

网上说的很多说更改 maven-compiler-plugin 版本,试了很多还是没有效果 Linux 服务器环境是 CentOS 7.4 64 位

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.library</groupId>
	<artifactId>libraryproject</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>

	<name>libraryproject</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<!-- mybatis 版本号 -->
		<mybatis.version>3.4.6</mybatis.version>
	</properties>

	<dependencies>
		<!-- 引入 Caffeine 本地缓存技术 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-cache</artifactId>
		</dependency>
		<dependency>
			<groupId>com.github.ben-manes.caffeine</groupId>
			<artifactId>caffeine</artifactId>
			<version>2.6.2</version>
		</dependency>

		<!-- FastJson -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.47</version>
		</dependency>

		<!-- mybatis 核心包 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
		</dependency>
		<!-- druid 数据库连接池 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.1.0</version>
		</dependency>

		<!-- 解决 @mapper 注解问题 -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>
		<!-- lombok 快捷开发包 -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.16.10</version>
			<scope>provided</scope>
		</dependency>
		<!-- easypoi 工具包 -->
		<dependency>
			<groupId>cn.afterturn</groupId>
			<artifactId>easypoi-base</artifactId>
			<version>3.2.0</version>
		</dependency>
		<dependency>
			<groupId>cn.afterturn</groupId>
			<artifactId>easypoi-web</artifactId>
			<version>3.2.0</version>
		</dependency>
		<dependency>
			<groupId>cn.afterturn</groupId>
			<artifactId>easypoi-annotation</artifactId>
			<version>3.2.0</version>
		</dependency>


		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.3.2</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.xmlunit</groupId>
			<artifactId>xmlunit-core</artifactId>
		</dependency>
		<!-- 工具包 -->
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>2.6</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.6.2</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>



大致的错误信息如下:
~~~执行 Maven:-B -f /root/.jenkins/workspace/LibrayProject/pom.xml 安装
[INFO]扫描项目......
[信息] 
[INFO] --------------------- <com.library:libraryproject> ------------------- - 
[INFO]构建 libraryproject 0.0.1-SNAPSHOT
[INFO] -------------------------------- [war] ------------ ---------------------
[信息] 
[INFO] --- maven-resources-plugin:3.0.2:resources ( default-resources )@ libraryproject ---
 [INFO]使用'UTF-8'编码复制过滤后的资源。
[INFO]复制 1 个资源
[INFO]复制 6 个资源
[信息] 
[INFO] --- maven-compiler-plugin:3.6.2:compile ( default-compile )@ libraryproject ---
 [INFO]检测到更改 - 重新编译模块!
[INFO]将 38 个源文件编译到 /root/.jenkins/workspace/LibrayProject/target/classes
[INFO] ----------------------------------------------- --------------
[ERROR]编译错误: 
 [INFO] ----------------------------------------- --------------------
 [ERROR] /root/.jenkins/workspace/LibrayProject/src/main/java/com/library/libraryproject/entity/SeatLocation.java:[3,14]包 lombok 不存在
 [错误] /root/.jenkins/workspace/LibrayProject/src/main/java/com/library/libraryproject/entity/SeatLocation.java:[4,14]包 lombok 不存在
 [错误] /root/.jenkins/workspace/LibrayProject/src/main/java/com/library/libraryproject/entity/SeatLocation.java:[5,14]包 lombok 不存在
 [ERROR] / root /。jenkins / workspace / LibrayProject / src / main / java / com / library / libraryproject / entity / SeatLocation.java:[6,14]包 lombok 不存在
[错误] /root/.jenkins/workspace/LibrayProject/src/main/java/com/library/libraryproject/entity/SeatLocation.java:[13,2]找不到符号
   符号:class Data
 [ERROR] / root /。jenkins / workspace / LibrayProject / src / main / java / com / library / libraryproject / entity / SeatLocation.java:[14,2]找不到符号
   符号:class Builder
 [ERROR] /root/.jenkins/workspace/LibrayProject/src /main/java/com/library/libraryproject/entity/SeatLocation.java:[15,2]找不到符号
   符号:class AllArgsConstructor
 [ERROR] /root/.jenkins/workspace/LibrayProject/src/main/java/com/ library / libraryproject / entity / SeatLocation.java:[16,2]找不到符号
   符号:class NoArgsConstructor
[错误] /root/.jenkins/workspace/LibrayProject/src/main/java/com/library/libraryproject/controller/ManagerController.java:[7,27]包 lombok.extern.slf4j 不存在
 [ERROR] / root /.jenkins/workspace/LibrayProject/src/main/java/com/library/libraryproject/controller/ManagerController.java:[8,52]包 org.springframework.beans.factory.annotation 不存在
 [ERROR] / root / .jenkins / workspace / LibrayProject / src / main / java / com / library / libraryproject / controller / ManagerController.java:[9,38] package org.springframework.stereotype 不存在
 [ERROR] /root/.jenkins/workspace/ LibrayProject / src / main / java / com / library / libraryproject / controller / ManagerController.java:[10,47]包 org.springframework.web.bind.annotation 不存在
[错误] /root/.jenkins/workspace/LibrayProject/src/main/java/com/library/libraryproject/controller/ManagerController.java:[11,47]包 org.springframework.web.bind.annotation 不存在
 [ ERROR] /root/.jenkins/workspace/LibrayProject/src/main/java/com/library/libraryproject/controller/ManagerController.java:[18,2]找不到符号
   符号:class Slf4j
 [ERROR] /root/.jenkins /workspace/LibrayProject/src/main/java/com/library/libraryproject/controller/ManagerController.java:[19,2]找不到符号
   符号:class Controller
 [ERROR] /root/.jenkins/workspace/LibrayProject/src/ main / java / com / library / libraryproject / controller / ManagerController.java:[20,2]找不到符号
   符号:class RequestMapping
[错误] /root/.jenkins/workspace/LibrayProject/src/main/java/com/library/libraryproject/entity/Manager.java:[3,14]包 lombok 不存在
 [ERROR] /root/.jenkins/ workspace / LibrayProject / src / main / java / com / library / libraryproject / entity / Manager.java:[4,14] package lombok 不存在
 [ERROR] /root/.jenkins/workspace/LibrayProject/src/main/java /com/library/libraryproject/entity/Manager.java:[5,14]包 lombok 不存在
 [ERROR] /root/.jenkins/workspace/LibrayProject/src/main/java/com/library/libraryproject/entity/ Manager.java:[6,14]包 lombok 不存在
 [错误] /root/.jenkins/workspace/LibrayProject/src/main/java/com/library/libraryproject/entity/Manager.java:[13,2]找不到符号
   符号:class Data
[错误] /root/.jenkins/workspace/LibrayProject/src/main/java/com/library/libraryproject/entity/Manager.java:[14,2]找不到符号
   符号:class Builder
5868 次点击
所在节点    程序员
12 条回复
alvinbone88
2018-12-11 08:39:56 +08:00
先在 Jenkins 上跑一遍 mvn compile --debug,然后检查 javac 的配置,重点关注-classpath, -proc, -processorpath -processor 这几个的值
defunct9
2018-12-11 08:58:19 +08:00
开 ssh,让我上去看看
biggates
2018-12-11 09:02:53 +08:00
你项目里的 lombok 的 scope 是 provided,但是又没有配置 delombok 所以就会缺了。解决方法要么是在 classpath 里加 lombok,要么改 scope 为默认,要么配置 delombok。
paragon
2018-12-11 11:01:16 +08:00
@biggates 正解
aatao
2018-12-12 01:02:59 +08:00
@biggates
配置 delombok 是引入这个嘛?
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>${lombok.plugin.version}</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>delombok</goal>
</goals>
</execution>
</executions>
</plugin>
aatao
2018-12-12 09:54:53 +08:00
我把 scope 删了,也就是改成默认了,试了一把,还是不行

然后尝试下载 lombok.jar 添加到服务器的 classpath 里面,但是仍然木有效果……

delomok 我在网上搜了搜,就看到楼上那种配置的… but 还是木有用
aatao
2018-12-12 23:31:17 +08:00
@paragon
@biggates
求教怎么配置 delombok, (加入 classpath 是 eclipse 项目?我看 idea 的 project structure 是存在 lombok 的 maven 依赖的)
aatao
2018-12-12 23:32:17 +08:00
<groupId>com.library</groupId>
<artifactId>libraryproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<name>libraryproject</name>
<description>Demo project for Spring Boot</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<lombok.version>1.16.16</lombok.version>
<lombok.plugin.version>1.16.16.0</lombok.plugin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<!-- mybatis 版本号 -->
<mybatis.version>3.4.6</mybatis.version>
</properties>

<dependencies>
<!-- 引入 Caffeine 本地缓存技术 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.6.2</version>
</dependency>

<!-- FastJson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>

<!-- mybatis 核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- druid 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>

<!-- 解决 @mapper 注解问题 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- lombok 快捷开发包 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>

<!-- easypoi 工具包 -->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>3.2.0</version>
</dependency>


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.xmlunit</groupId>
<artifactId>xmlunit-core</artifactId>
</dependency>
<!-- 工具包 -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>${lombok.plugin.version}</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>delombok</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
aatao
2018-12-13 00:36:02 +08:00
我在本地跑了 lombok:delombok 但是在 jenkins 上仍然没有效果
biggates
2018-12-13 09:48:13 +08:00
@aatao 我这边的项目 lombok 都是默认打进去的,没试过 delombok。另外 jenkins 的 classpath 可能是一个额外的配置(因为他可以自动从 sun 下载,还可以指定具体的版本号,这意味着不一定是调用了系统的 jdk )。如果一定要 delombok 的话你可以在 jenkins 里面 Global Tool Configuration -> JDK 研究一下。

另:如果你要跑 delombok 的话,注意如果默认配置的话,只有 `src/main/lombok` 目录下的 java 文件才会进行 delombok。具体查阅 http://awhitford.github.io/lombok.maven/lombok-maven-plugin/usage.html
biggates
2018-12-13 09:50:21 +08:00
aatao
2019-08-15 10:47:02 +08:00
老坑回看....
问题解决:重新配置服务器上的 maven

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

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

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

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

© 2021 V2EX