- 开发环境
- 相关内容
- 代码内容
- 错误:(3, 27) java: 程序包com.netflix.appinfo不存在
- 错误-Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
- 问题-Maven: org.springframework.cloud:xx:unknown
- 错误-无法解析符号 ‘log’
- 错误-No active profile set, falling back to default profiles: default
- 错误-无法解析符号 ‘lombok’
- 错误-The Tomcat connector configured to listen on port 8771 failed to start
- 错误-Could not resolve dependencies for project
- 找不到插件 ‘org.springframework.boot:spring-boot-maven-plugin:’
开发环境
| 名称 | 版本 |
|---|---|
| 操作系统 | Windows 10 X64 |
| JDK | JDK1.8(jdk-8u151-windows-x64) |
| IntelliJ IDEA | IntelliJ IDEA 2018.3 |
| Maven | Maven 3.6.0 |
相关内容
代码内容
搭建一个 Eureka 项目,项目结构如下
1.pom.xml【demo-framework】
<?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"><!--父级:Spring Boot--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.9.RELEASE</version></parent><name>demo-framework</name><modelVersion>4.0.0</modelVersion><groupId>com.demo.framework</groupId><artifactId>demo.framework</artifactId><version>1.0-SNAPSHOT</version><!--在父级项目中的 pom.xml 文件使用的 packaging 配置一定为 pom。--><!--父级的 pom 文件只作项目的子模块的整合--><!--在 maven install 时不会生成 jar/war 压缩包--><packaging>pom</packaging><modules><module>demo-eureka</module></modules><!--基础配置--><properties><java.version>1.8</java.version><!--项目统一字符集编码--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding></properties><dependencies><!--Spring Boot 执行器组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--Spring Cloud 基础--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter</artifactId></dependency><!--Spring Cloud 服务注册组件--><dependency><groupId>org.springframework.cloud</groupId><!--此处的依赖是SpringBoot2.0以后专用的,如果您使用的SpringBoot版本低于2.0请使用spring-cloud-starter-eureka-server--><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><!--Spring Boot Web组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 参数校验信息 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency><!-- spring aop start --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><!-- spring aop end --><!--Spring Boot 测试组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20200518</version></dependency></dependencies></project>
2.pom.xml【demo-eureka】
<?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"><parent><artifactId>demo.framework</artifactId><groupId>com.demo.framework</groupId><version>1.0-SNAPSHOT</version></parent><name>demo-eureka</name><modelVersion>4.0.0</modelVersion><artifactId>demo-eureka</artifactId><!--使用 jar 方式打包--><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring-cloud-netflix-eureka-server.version>2.1.0.RC2</spring-cloud-netflix-eureka-server.version></properties><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><!--如果要访问info接口想获取maven中的属性内容请记得添加如下内容--><goal>build-info</goal><goal>repackage</goal></goals></execution></executions><!-- 构建不包含lib的jar包--><configuration><layout>ZIP</layout><includes><include><groupId>non-exists</groupId><artifactId>non-exists</artifactId></include></includes></configuration></plugin><plugin><!-- 指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中不能使用低版本jdk中不支持的语法),会存在target不同于source的情况 --><source>1.8</source> <!-- 源代码使用的JDK版本 --><target>1.8</target> <!-- 需要生成的目标class文件的编译版本 --><encoding>UTF-8</encoding><!-- 字符集编码 --></configuration></plugin><plugin><groupId>org.sonarsource.scanner.maven</groupId><artifactId>sonar-maven-plugin</artifactId><version>3.5.0.1254</version></plugin><!-- 打包跳过TEST --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.18.1</version><configuration><!--true跳过测试 --><skipTests>true</skipTests></configuration></plugin><!-- 打jar包不包含yml文件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><!-- 排除配置文件 --><excludes><exclude>*.yml</exclude><exclude>*.xml</exclude></excludes></configuration></plugin><!-- 配置文件打包到conf目录下 --><plugin><artifactId>maven-resources-plugin</artifactId><executions><execution><id>copy-sources</id><phase>process-sources</phase><goals><goal>copy-resources</goal></goals><configuration><outputDirectory>${project.build.directory}/conf</outputDirectory><resources><resource><directory>src/main/resources</directory><includes><include>*.yml</include><include>*.xml</include></includes></resource></resources></configuration></execution></executions></plugin><!-- 依赖包到lib目录下 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/lib</outputDirectory><useBaseVersion>true</useBaseVersion></configuration></execution></executions></plugin></plugins><resources><resource><directory>src/main/resources</directory><includes><include>**/*</include></includes><filtering>false</filtering></resource></resources></build></project>
3.EureKaHaApplication
package com.demo.eureka;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration;import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;import org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;//排除掉数据库配置项目@SpringBootApplication( exclude = {DataSourceAutoConfiguration.class,DataSourceTransactionManagerAutoConfiguration.class,RedisAutoConfiguration.class,RedisRepositoriesAutoConfiguration.class,RabbitAutoConfiguration.class})@EnableEurekaServerpublic class EureKaHaApplication {public static void main(String[] args) {SpringApplication.run(EureKaHaApplication.class, args);}}
4.EurekaStateChangeListener
package com.demo.eureka;import com.netflix.appinfo.InstanceInfo;import lombok.extern.slf4j.Slf4j;import org.springframework.cloud.netflix.eureka.server.event.*;import org.springframework.context.event.EventListener;import org.springframework.stereotype.Component;@Slf4j@Componentpublic class EurekaStateChangeListener {@EventListenerpublic void listen(EurekaInstanceCanceledEvent event) {log.info(event.getServerId() + "\t" + event.getAppName() + " 服务下线");}@EventListenerpublic void listen(EurekaInstanceRegisteredEvent event) {InstanceInfo instanceInfo = event.getInstanceInfo();log.info(instanceInfo.getAppName() + "进行注册");}@EventListenerpublic void listen(EurekaInstanceRenewedEvent event) {log.info(event.getServerId() + "\t" + event.getAppName() + " 服务进行续约");}@EventListenerpublic void listen(EurekaRegistryAvailableEvent event) {log.info("注册中心 启动");}@EventListenerpublic void listen(EurekaServerStartedEvent event) {log.info("Eureka Server 启动");}}
错误:(3, 27) java: 程序包com.netflix.appinfo不存在
1.问题描述
编译项目,报错
错误:(3, 27) java: 程序包com.netflix.appinfo不存在
2.问题分析
相关的包没有引用
3.问题解决
demo-eureka pom.xml 添加下面的内容,再次编译,错误消失
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring-cloud-netflix-eureka-server.version>2.1.0.RC2</spring-cloud-netflix-eureka-server.version></properties><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-netflix-eureka-server</artifactId><version>${spring-cloud-netflix-eureka-server.version}</version><scope>compile</scope></dependency>
这样问题并没有彻底解决,会引发新的问题,解决办法参考问题-Maven: org.springframework.cloud:xx:unknown
错误-Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
1.问题描述
解决了上面的错误之后,运行程序,报下面的错误
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]at java.util.concurrent.FutureTask.report(FutureTask.java:122)at java.util.concurrent.FutureTask.get(FutureTask.java:192)at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:942)at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1423)at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1413)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)... 6 common frames omittedCaused by: org.apache.catalina.LifecycleException: Failed to start component [Pipeline[StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5146)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 6 common frames omittedCaused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.authenticator.NonLoginAuthenticator[]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)at org.apache.catalina.core.StandardPipeline.startInternal(StandardPipeline.java:182)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 8 common frames omittedCaused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;at org.apache.catalina.authenticator.AuthenticatorBase.startInternal(AuthenticatorBase.java:1181)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 10 common frames omitted2021-03-08 12:43:05.850 ERROR 6728 --- [ main] org.apache.catalina.core.ContainerBase : A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]at java.util.concurrent.FutureTask.report(FutureTask.java:122)at java.util.concurrent.FutureTask.get(FutureTask.java:192)at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:942)at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.apache.catalina.startup.Tomcat.start(Tomcat.java:427)at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:107)at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:86)at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:419)at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:174)at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:181)at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:154)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545)at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142)at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1242)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1230)at com.demo.eureka.EureKaHaApplication.main(EureKaHaApplication.java:23)Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1423)at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1413)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)Caused by: org.apache.catalina.LifecycleException: A child container failed during startat org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:953)at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 6 common frames omittedCaused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]at java.util.concurrent.FutureTask.report(FutureTask.java:122)at java.util.concurrent.FutureTask.get(FutureTask.java:192)at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:942)... 8 common frames omittedCaused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)... 6 common frames omittedCaused by: org.apache.catalina.LifecycleException: Failed to start component [Pipeline[StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5146)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 6 common frames omittedCaused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.authenticator.NonLoginAuthenticator[]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)at org.apache.catalina.core.StandardPipeline.startInternal(StandardPipeline.java:182)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 8 common frames omittedCaused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;at org.apache.catalina.authenticator.AuthenticatorBase.startInternal(AuthenticatorBase.java:1181)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 10 common frames omitted2021-03-08 12:43:05.851 INFO 6728 --- [ main] o.a.coyote.http11.Http11NioProtocol : Pausing ProtocolHandler ["http-nio-8771"]2021-03-08 12:43:05.851 INFO 6728 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]2021-03-08 12:43:05.852 WARN 6728 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat进程已结束,退出代码 1
2.问题分析
报错信息中出现了
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()
下面这个老哥的分析,原因如下
SpringBoot报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
Servlet-api 3.1.0 以及之后的版本中才有getVirtualServerName,确保项目中使用的是这个版本3.1.0以及之后,或者直接排除所有Servlet-api,使用SpringBoot内嵌的tomcat.
3.问题解决
打开模块设置
可以看到这里 servlet 的版本是 2.5,这里选中这个依赖,点击 - 移除
移除后再次运行项目,问题解决
问题-Maven: org.springframework.cloud:xx:unknown
1.问题描述
查看模块设置,出现 Maven: org.springframework.cloud:xx:unknown 错误
库有 'Maven: org.springframework.cloud:spring-cloud-starter:unknown' 有损坏的路径库有 'Maven: org.springframework.cloud:spring-cloud-starter-netflix-eureka-server:unknown' 有损坏的路径
在右侧的 Maven 选项卡也存在同样问题
2.问题分析
org.springframework:spring-cloud-starter-netflix-eureka-client:unknown 的解决办法
原因很简单,是因为没有指定依赖的版本号(不知道为什么 SpringCloud 其他依赖都默认有版本号维护,但是这个没有,所以自己手动加一下)
3.问题解决
我参考了之前相同配置但无报错的 maven 引用情况,如下
(1)pom.xml【demo-framework】
<?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"><!--父级:Spring Boot--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.9.RELEASE</version></parent><name>demo-framework</name><modelVersion>4.0.0</modelVersion><groupId>com.demo.framework</groupId><artifactId>demo.framework</artifactId><version>1.0-SNAPSHOT</version><!--在父级项目中的 pom.xml 文件使用的 packaging 配置一定为 pom。--><!--父级的 pom 文件只作项目的子模块的整合--><!--在 maven install 时不会生成 jar/war 压缩包--><packaging>pom</packaging><modules><module>demo-eureka</module></modules><!--基础配置--><properties><java.version>1.8</java.version><!--项目统一字符集编码--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring.boot.version>2.1.9.RELEASE</spring.boot.version><spring.clound.version>2.1.0.RELEASE</spring.clound.version></properties><dependencies><!--Spring Boot 执行器组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId><version>${spring.boot.version}</version></dependency><!--Spring Cloud 基础--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter</artifactId><version>${spring.clound.version}</version></dependency><!--Spring Cloud 服务注册组件--><dependency><groupId>org.springframework.cloud</groupId><!--此处的依赖是SpringBoot2.0以后专用的,如果您使用的SpringBoot版本低于2.0请使用spring-cloud-starter-eureka-server--><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId><version>${spring.clound.version}</version></dependency><!--Spring Boot Web组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${spring.boot.version}</version></dependency><!-- 参数校验信息 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>${spring.boot.version}</version></dependency><!-- spring aop start --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId><version>${spring.boot.version}</version></dependency><!-- spring aop end --><!--Spring Boot 测试组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>${spring.boot.version}</version><scope>test</scope></dependency><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20200518</version></dependency></dependencies></project>
(2)pom.xml【demo-eureka】
<?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"><parent><artifactId>demo.framework</artifactId><groupId>com.demo.framework</groupId><version>1.0-SNAPSHOT</version></parent><name>demo-eureka</name><modelVersion>4.0.0</modelVersion><artifactId>demo-eureka</artifactId><!--使用 jar 方式打包--><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version></dependency><!-- 引入此jar会有版本冲突问题<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-netflix-eureka-server</artifactId><version>2.1.0.RC2</version></dependency>--></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><!--如果要访问info接口想获取maven中的属性内容请记得添加如下内容--><goal>build-info</goal><goal>repackage</goal></goals></execution></executions><!-- 构建不包含lib的jar包--><configuration><layout>ZIP</layout><includes><include><groupId>non-exists</groupId><artifactId>non-exists</artifactId></include></includes></configuration></plugin><plugin><!-- 指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中不能使用低版本jdk中不支持的语法),会存在target不同于source的情况 --><source>1.8</source> <!-- 源代码使用的JDK版本 --><target>1.8</target> <!-- 需要生成的目标class文件的编译版本 --><encoding>UTF-8</encoding><!-- 字符集编码 --></configuration></plugin><plugin><groupId>org.sonarsource.scanner.maven</groupId><artifactId>sonar-maven-plugin</artifactId><version>3.5.0.1254</version></plugin><!-- 打包跳过TEST --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.18.1</version><configuration><!--true跳过测试 --><skipTests>true</skipTests></configuration></plugin><!-- 打jar包不包含yml文件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><!-- 排除配置文件 --><excludes><exclude>*.yml</exclude><exclude>*.xml</exclude></excludes></configuration></plugin><!-- 配置文件打包到conf目录下 --><plugin><artifactId>maven-resources-plugin</artifactId><executions><execution><id>copy-sources</id><phase>process-sources</phase><goals><goal>copy-resources</goal></goals><configuration><outputDirectory>${project.build.directory}/conf</outputDirectory><resources><resource><directory>src/main/resources</directory><includes><include>*.yml</include><include>*.xml</include></includes></resource></resources></configuration></execution></executions></plugin><!-- 依赖包到lib目录下 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/lib</outputDirectory><useBaseVersion>true</useBaseVersion></configuration></execution></executions></plugin></plugins><resources><resource><directory>src/main/resources</directory><includes><include>**/*</include></includes><filtering>false</filtering></resource></resources></build></project>
4.测试结果
配置后,点击 Import Changes,问题解决
错误-无法解析符号 ‘log’
1.问题描述
2.问题分析
猜测是没有安装 Lombok 插件引起的
3.问题解决
安装 Lombok 插件后,问题解决
4.扩展-相关问题
错误-No active profile set, falling back to default profiles: default
1.问题描述
启动项目,控制台打印了下面的信息,然后程序就结束了
2021-03-09 21:13:45.487 INFO 121688 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@7722c3c3: startup date [Tue Mar 09 21:13:45 CST 2021]; root of context hierarchy2021-03-09 21:13:45.806 INFO 121688 --- [ main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring2021-03-09 21:13:45.836 INFO 121688 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$1bb2196e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)2021-03-09 21:13:47.497 INFO 121688 --- [ main] com.demo.eureka.EureKaHaApplication : No active profile set, falling back to default profiles: default进程已结束,退出代码 1
2.问题分析
查了很多解决方案,都没办法解决,最后请教杨老师,他说是还有些包没有引用。
再次分析了之前成功运行的项目,发现还需要引用一个父 pom 文件
3.问题解决
(1)新建 enta-parent.pom.xml
<?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><!-- <parent>--><!-- <groupId>org.springframework.boot</groupId>--><!-- <artifactId>spring-boot-dependencies</artifactId>--><!-- <version>2.1.9.RELEASE</version>--><!-- </parent>--><groupId>com.demo.enta</groupId><artifactId>enta-parent</artifactId><version>1.0.3.RELEASE</version><name>enta-parent</name><packaging>pom</packaging><description>enta基本库,负责引入公共开源lib库版本定义、maven发布配置、环境配置等职责-----这个版本主要解决以下问题------漏洞描述:VMware Tanzu发布安全公告,在Spring Framework版本5.2.0-5.2.8、5.1.0-5.1.17、5.0.0-5.0.18、4.3.0-4.3.28和较旧的不受支持的版本中,公布了一个存在于Spring Framework中的反射型文件下载(Reflected File Download,RFD)漏洞CVE-2020-5421。CVE-2020-5421 可通过jsessionid路径参数,绕过防御RFD攻击的保护。攻击者通过向用户发送带有批处理脚本扩展名的URL,使用户下载并执行文件,从而危害用户系统。VMware Tanzu官方已发布修复漏洞的新版本。Spring Framework是 Java 平台的一个开源全栈应用程序框架和控制反转容器实现,一般被直接称为 Spring。漏洞等级:高危受影响的版本:Spring Framework5.2.0 - 5.2.85.1.0 - 5.1.175.0.0 - 5.0.184.3.0 - 4.3.28及更早期的版本安全版本:Spring Framework5.2.95.1.185.0.194.3.29下载链接:https://github.com/spring-projects/spring-framework/releasesfastJson : 1.2.67 -> 1.2.69 版本xstream: 1.4.10 -> 1.4.11 版本</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.repofastjsonrting.outputEncoding>UTF-8</project.repofastjsonrting.outputEncoding><java.version>1.8</java.version><resource.delimiter>@</resource.delimiter><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target><maven.compiler.compilerVersion>${java.version}</maven.compiler.compilerVersion><spring.boot.version>2.1.9.RELEASE</spring.boot.version><spring.cloud.version>Greenwich.RELEASE</spring.cloud.version><mybatis-plus-spring-boot-starter.version>3.1.0</mybatis-plus-spring-boot-starter.version><mybatisplus.version>3.1.0</mybatisplus.version><fastjson.version>1.2.69</fastjson.version><swagger.version>2.7.0</swagger.version><swagger-ui.version>2.7.0</swagger-ui.version><swagger-bootstrap-ui.version>1.9.2</swagger-bootstrap-ui.version><commons-codec.version>1.10</commons-codec.version><commons-lang3.version>3.6</commons-lang3.version><commons-io.version>2.5</commons-io.version><commons-text.version>1.7</commons-text.version><commons-httpclient.version>3.1</commons-httpclient.version><HikariCP.version>3.3.1</HikariCP.version><velocity.version>1.7</velocity.version><jjwt.version>0.8.0</jjwt.version><jjwt.version2>3.4.1</jjwt.version2><hutool.version>4.5.1</hutool.version><lombok.version>1.18.8</lombok.version><gson.version>2.8.5</gson.version><guava.version>23.0</guava.version><security-oauth2.version>2.3.6.RELEASE</security-oauth2.version><p6spy.version>3.8.5</p6spy.version><druid.version>1.1.20</druid.version><druid.starter.version>1.1.20</druid.starter.version><feign-okhttp.version>10.5.1</feign-okhttp.version><spring.boot.admin.server.version>2.1.6</spring.boot.admin.server.version><dec.version>0.1.2</dec.version><spring.version>5.1.18.RELEASE</spring.version><spring-framework.version>${spring.version}</spring-framework.version><xstream.version>1.4.11</xstream.version></properties><!--Spring Cloud 版本序列配置--><dependencyManagement><dependencies><!-- Override springframework release train provided by Spring Boot --><!--https://www.cnblogs.com/zhangjianbin/p/10076427.html--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring-framework.version}</version><scope>import</scope><type>pom</type></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-framework-bom</artifactId><version>${spring-framework.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>${xstream.version}</version><scope>import</scope><type>pom</type></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud.version}</version><type>pom</type><scope>import</scope><exclusions><exclusion><groupId>redis.clients</groupId><artifactId>jedis</artifactId></exclusion></exclusions></dependency><!-- 用于日志切面中,以 json 格式打印出入参(本来使用阿里的 FASTJSON, 但是对于文件上传的接口,打印参数会报错,换为 Gson) --><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>${gson.version}</version></dependency><!--lombok start--><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><!--lombok end--><!--fastJson start--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><!--fastJson end--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.starter.version}</version></dependency><!--swagger start--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${swagger.version}</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>${swagger-ui.version}</version></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>swagger-bootstrap-ui</artifactId><version>${swagger-bootstrap-ui.version}</version></dependency><!--swagger end--><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>${guava.version}</version></dependency><!--jwt start--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency><!--jwt end--><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>${jjwt.version2}</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>${commons-io.version}</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool.version}</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-text</artifactId><version>${commons-text.version}</version></dependency><dependency><groupId>org.springframework.security.oauth</groupId><artifactId>spring-security-oauth2</artifactId><version>${security-oauth2.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus-spring-boot-starter.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>${mybatisplus.version}</version></dependency><dependency><groupId>io.github.openfeign</groupId><artifactId>feign-okhttp</artifactId><version>${feign-okhttp.version}</version></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>${spring.boot.admin.server.version}</version></dependency><!-- https://mvnrepository.com/artifact/org.brotli/dec --><dependency><groupId>org.brotli</groupId><artifactId>dec</artifactId><version>${dec.version}</version></dependency></dependencies></dependencyManagement><!--注意:这里必须要添加,否则各种依赖有问题--><!--<repositories>--><!--<repository>--><!--<id>spring-milestones</id>--><!--<name>Spring Milestones</name>--><!--<url>https://repo.spring.io/libs-milestone</url>--><!--<snapshots>--><!--<enabled>false</enabled>--><!--</snapshots>--><!--</repository>--><!--</repositories>--><distributionManagement><!--<repository>--><!--<id>internal.releases</id>--><!--<name>internal repository for releases</name>--><!--<url>http://maven.oa.com/nexus/content/repositories/thirdparty/</url>--><!--</repository>--><!--<snapshotRepository>--><!--<id>internal.snapshots</id>--><!--<name>internal repository for snapshots</name>--><!--<url>http://maven.oa.com/nexus/content/repositories/thirdparty-snapshots/</url>--><!--</snapshotRepository>--></distributionManagement></project>
(2)pom.xml【demo-framework】
<?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"><parent><artifactId>enta-parent</artifactId><groupId>com.demo.enta</groupId><version>1.0.3.RELEASE</version><relativePath>enta-parent.pom.xml</relativePath></parent><name>demo-framework</name><modelVersion>4.0.0</modelVersion><groupId>com.demo.framework</groupId><artifactId>demo.framework</artifactId><version>1.0-SNAPSHOT</version><!--在父级项目中的 pom.xml 文件使用的 packaging 配置一定为 pom。--><!--父级的 pom 文件只作项目的子模块的整合--><!--在 maven install 时不会生成 jar/war 压缩包--><packaging>pom</packaging><modules><module>demo-eureka</module></modules><!--基础配置--><properties><java.version>1.8</java.version><!--项目统一字符集编码--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding></properties><dependencies><!--Spring Boot 执行器组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--Spring Cloud 基础--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter</artifactId></dependency><!--Spring Cloud 服务注册组件--><dependency><groupId>org.springframework.cloud</groupId><!--此处的依赖是SpringBoot2.0以后专用的,如果您使用的SpringBoot版本低于2.0请使用spring-cloud-starter-eureka-server--><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><!--Spring Boot Web组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 参数校验信息 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>2.1.9.RELEASE</version></dependency><!-- spring aop start --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><!-- spring aop end --><!--Spring Boot 测试组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20200518</version></dependency></dependencies></project>
(3)pom.xml【demo-eureka】
<?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"><parent><artifactId>demo.framework</artifactId><groupId>com.demo.framework</groupId><version>1.0-SNAPSHOT</version></parent><name>demo-eureka</name><modelVersion>4.0.0</modelVersion><artifactId>demo-eureka</artifactId><!--使用 jar 方式打包--><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- 引入此jar会有版本冲突问题<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-netflix-eureka-server</artifactId><version>2.1.0.RC2</version></dependency>--><!--虽然 enta-parent.pom.xml 引用了这个组件,但是这里不引用,程序还是会报错"程序包 lombok.extern.slf4j不存在"--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><!--如果要访问info接口想获取maven中的属性内容请记得添加如下内容--><goal>build-info</goal><goal>repackage</goal></goals></execution></executions><!-- 构建不包含lib的jar包--><configuration><layout>ZIP</layout><includes><include><groupId>non-exists</groupId><artifactId>non-exists</artifactId></include></includes></configuration></plugin><plugin><!-- 指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中不能使用低版本jdk中不支持的语法),会存在target不同于source的情况 --><source>1.8</source> <!-- 源代码使用的JDK版本 --><target>1.8</target> <!-- 需要生成的目标class文件的编译版本 --><encoding>UTF-8</encoding><!-- 字符集编码 --></configuration></plugin><plugin><groupId>org.sonarsource.scanner.maven</groupId><artifactId>sonar-maven-plugin</artifactId><version>3.5.0.1254</version></plugin><!-- 打包跳过TEST --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.18.1</version><configuration><!--true跳过测试 --><skipTests>true</skipTests></configuration></plugin><!-- 打jar包不包含yml文件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><!-- 排除配置文件 --><excludes><exclude>*.yml</exclude><exclude>*.xml</exclude></excludes></configuration></plugin><!-- 配置文件打包到conf目录下 --><plugin><artifactId>maven-resources-plugin</artifactId><executions><execution><id>copy-sources</id><phase>process-sources</phase><goals><goal>copy-resources</goal></goals><configuration><outputDirectory>${project.build.directory}/conf</outputDirectory><resources><resource><directory>src/main/resources</directory><includes><include>*.yml</include><include>*.xml</include></includes></resource></resources></configuration></execution></executions></plugin><!-- 依赖包到lib目录下 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/lib</outputDirectory><useBaseVersion>true</useBaseVersion></configuration></execution></executions></plugin></plugins><resources><resource><directory>src/main/resources</directory><includes><include>**/*</include></includes><filtering>false</filtering></resource></resources></build></project>
错误-无法解析符号 ‘lombok’
错误-The Tomcat connector configured to listen on port 8771 failed to start
1.问题描述
启动项目,控制台报下面的错误
Description:The Tomcat connector configured to listen on port 8771 failed to start. The port may already be in use or the connector may be misconfigured.Action:Verify the connector's configuration, identify and stop any process that's listening on port 8771, or configure this application to listen on another port.
2.问题分析
这是端口被占用导致的
3.问题解决
(1)查看占用端口号的 PID-netstat -ano
(2)根据 PID 查询程序-tasklist | findstr "2864"
(3)结束程序-taskkill /f /t /im java.exe
4.测试结果
错误-Could not resolve dependencies for project
1.问题描述
(1)enta-parent.pom.xml
enta-parent.pom.xml新建%20enta-parent.pom.xml “enta-parent.pom.xml”)
(2)pom.xml【demo-framework】
pom.xml【demo-framework】pom.xml【demo-framework】 “pom.xml【demo-framework】”)
(3)pom.xml【demo-server】
<?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"><parent><artifactId>demo.framework</artifactId><groupId>com.demo.framework</groupId><version>1.0-SNAPSHOT</version></parent><name>demo-server</name><modelVersion>4.0.0</modelVersion><artifactId>demo-server</artifactId><!--使用 jar 方式打包--><packaging>jar</packaging><dependencies><dependency><groupId>com.demo.framework</groupId><artifactId>demo-common</artifactId><version>1.0-SNAPSHOT</version></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--db--><dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency><!--redis start--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</artifactId></dependency><!--<dependency>--><!--<groupId>org.springframework.cloud</groupId>--><!--<!–此处的依赖是SpringBoot2.0以后专用的,如果您使用的SpringBoot版本低于2.0请使用spring-cloud-starter-eureka-server–>--><!--<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>--><!--</dependency>--></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><!--如果要访问info接口想获取maven中的属性内容请记得添加如下内容--><goal>build-info</goal><goal>repackage</goal></goals></execution></executions><!-- 构建不包含lib的jar包--><configuration><layout>ZIP</layout><includes><include><groupId>non-exists</groupId><artifactId>non-exists</artifactId></include></includes></configuration></plugin><plugin><!-- 指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中不能使用低版本jdk中不支持的语法),会存在target不同于source的情况 --><source>1.8</source> <!-- 源代码使用的JDK版本 --><target>1.8</target> <!-- 需要生成的目标class文件的编译版本 --><encoding>UTF-8</encoding><!-- 字符集编码 --></configuration></plugin><plugin><groupId>org.sonarsource.scanner.maven</groupId><artifactId>sonar-maven-plugin</artifactId><version>3.5.0.1254</version></plugin><!-- 打包跳过TEST --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.18.1</version><configuration><!--true跳过测试 --><skipTests>true</skipTests></configuration></plugin><!-- 打jar包不包含yml文件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><!-- 排除配置文件 --><excludes><exclude>*.yml</exclude><exclude>*.xml</exclude></excludes></configuration></plugin><!-- 配置文件打包到conf目录下 --><plugin><artifactId>maven-resources-plugin</artifactId><executions><execution><id>copy-sources</id><phase>process-sources</phase><goals><goal>copy-resources</goal></goals><configuration><outputDirectory>${project.build.directory}/conf</outputDirectory><resources><resource><directory>src/main/resources</directory><includes><include>*.yml</include><include>*.xml</include></includes></resource></resources></configuration></execution></executions></plugin><!-- 依赖包到lib目录下 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/lib</outputDirectory><useBaseVersion>true</useBaseVersion></configuration></execution></executions></plugin></plugins><resources><resource><directory>src/main/resources</directory><includes><include>**/*</include></includes><filtering>false</filtering></resource></resources></build></project>
(4)打包
Maven-demo-server-Lifecyle-package
报错
[INFO] --------------------------------[ jar ]---------------------------------[INFO] ------------------------------------------------------------------------[INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[INFO] Total time: 1.491 s[INFO] Finished at: 2021-03-21T12:39:44+08:00[INFO] ------------------------------------------------------------------------[ERROR] Failed to execute goal on project demo-server: Could not resolve dependencies for project com.demo.framework:demo-server:jar:1.0-SNAPSHOT: Failed to collect dependencies at com.demo.framework:demo-common:jar:1.0-SNAPSHOT: Failed to read artifact descriptor for com.demo.framework:demo-common:jar:1.0-SNAPSHOT: Failure to find com.demo.enta:enta-parent:pom:1.0.3.RELEASE in http://maven.aliyun.com/nexus/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of alimaven has elapsed or updates are forced -> [Help 1][ERROR][ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.[ERROR] Re-run Maven using the -X switch to enable full debug logging.[ERROR][ERROR] For more information about the errors and possible solutions, please read the following articles:[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException进程已结束,退出代码 1
2.问题分析
根据错误提示 Failure to find com.demo.enta:enta-parent:pom:1.0.3.RELEASE in
应该是无法解析 com.demo.enta
3.问题解决
(1)pom.xml【demo-framework】
<?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"><description>enta基本库,负责引入公共开源lib库版本定义、maven发布配置、环境配置等职责-----这个版本主要解决以下问题------漏洞描述:VMware Tanzu发布安全公告,在Spring Framework版本5.2.0-5.2.8、5.1.0-5.1.17、5.0.0-5.0.18、4.3.0-4.3.28和较旧的不受支持的版本中,公布了一个存在于Spring Framework中的反射型文件下载(Reflected File Download,RFD)漏洞CVE-2020-5421。CVE-2020-5421 可通过jsessionid路径参数,绕过防御RFD攻击的保护。攻击者通过向用户发送带有批处理脚本扩展名的URL,使用户下载并执行文件,从而危害用户系统。VMware Tanzu官方已发布修复漏洞的新版本。Spring Framework是 Java 平台的一个开源全栈应用程序框架和控制反转容器实现,一般被直接称为 Spring。漏洞等级:高危受影响的版本:Spring Framework5.2.0 - 5.2.85.1.0 - 5.1.175.0.0 - 5.0.184.3.0 - 4.3.28及更早期的版本安全版本:Spring Framework5.2.95.1.185.0.194.3.29下载链接:https://github.com/spring-projects/spring-framework/releasesfastJson : 1.2.67 -> 1.2.69 版本xstream: 1.4.10 -> 1.4.11 版本</description><name>demo-framework</name><modelVersion>4.0.0</modelVersion><groupId>com.demo.framework</groupId><artifactId>demo.framework</artifactId><version>1.0-SNAPSHOT</version><!--在父级项目中的 pom.xml 文件使用的 packaging 配置一定为 pom。--><!--父级的 pom 文件只作项目的子模块的整合--><!--在 maven install 时不会生成 jar/war 压缩包--><packaging>pom</packaging><modules><module>demo-eureka</module><module>demo-server</module><module>demo-common</module><module>demo-contract</module><module>demo-web</module></modules><!--基础配置只是声明依赖,并不实现引入,因此子项目需要显示声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本--><properties><java.version>1.8</java.version><resource.delimiter>@</resource.delimiter><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.repofastjsonrting.outputEncoding>UTF-8</project.repofastjsonrting.outputEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target><maven.compiler.compilerVersion>${java.version}</maven.compiler.compilerVersion><spring.boot.version>2.1.9.RELEASE</spring.boot.version><spring.cloud.version>Greenwich.RELEASE</spring.cloud.version><mybatis-plus-spring-boot-starter.version>3.1.0</mybatis-plus-spring-boot-starter.version><mybatisplus.version>3.1.0</mybatisplus.version><fastjson.version>1.2.69</fastjson.version><swagger.version>2.7.0</swagger.version><swagger-ui.version>2.7.0</swagger-ui.version><swagger-bootstrap-ui.version>1.9.2</swagger-bootstrap-ui.version><commons-codec.version>1.10</commons-codec.version><commons-lang3.version>3.6</commons-lang3.version><commons-io.version>2.5</commons-io.version><commons-text.version>1.7</commons-text.version><commons-httpclient.version>3.1</commons-httpclient.version><HikariCP.version>3.3.1</HikariCP.version><velocity.version>1.7</velocity.version><jjwt.version>0.8.0</jjwt.version><jjwt.version2>3.4.1</jjwt.version2><hutool.version>4.5.1</hutool.version><lombok.version>1.18.8</lombok.version><gson.version>2.8.5</gson.version><guava.version>23.0</guava.version><security-oauth2.version>2.3.6.RELEASE</security-oauth2.version><p6spy.version>3.8.5</p6spy.version><druid.version>1.1.20</druid.version><druid.starter.version>1.1.20</druid.starter.version><feign-okhttp.version>10.5.1</feign-okhttp.version><spring.boot.admin.server.version>2.1.6</spring.boot.admin.server.version><dec.version>0.1.2</dec.version><spring.version>5.1.18.RELEASE</spring.version><spring-framework.version>${spring.version}</spring-framework.version><xstream.version>1.4.11</xstream.version></properties><!--Spring Cloud 版本序列配置--><dependencyManagement><dependencies><!-- Override springframework release train provided by Spring Boot --><!--https://www.cnblogs.com/zhangjianbin/p/10076427.html--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring-framework.version}</version><scope>import</scope><type>pom</type></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-framework-bom</artifactId><version>${spring-framework.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>${xstream.version}</version><scope>import</scope><type>pom</type></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud.version}</version><type>pom</type><scope>import</scope><exclusions><exclusion><groupId>redis.clients</groupId><artifactId>jedis</artifactId></exclusion></exclusions></dependency><!-- 用于日志切面中,以 json 格式打印出入参(本来使用阿里的 FASTJSON, 但是对于文件上传的接口,打印参数会报错,换为 Gson) --><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>${gson.version}</version></dependency><!--lombok start--><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><!--lombok end--><!--fastJson start--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><!--fastJson end--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.starter.version}</version></dependency><!--swagger start--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${swagger.version}</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>${swagger-ui.version}</version></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>swagger-bootstrap-ui</artifactId><version>${swagger-bootstrap-ui.version}</version></dependency><!--swagger end--><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>${guava.version}</version></dependency><!--jwt start--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency><!--jwt end--><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>${jjwt.version2}</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>${commons-io.version}</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool.version}</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-text</artifactId><version>${commons-text.version}</version></dependency><dependency><groupId>org.springframework.security.oauth</groupId><artifactId>spring-security-oauth2</artifactId><version>${security-oauth2.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus-spring-boot-starter.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>${mybatisplus.version}</version></dependency><dependency><groupId>io.github.openfeign</groupId><artifactId>feign-okhttp</artifactId><version>${feign-okhttp.version}</version></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>${spring.boot.admin.server.version}</version></dependency><!-- https://mvnrepository.com/artifact/org.brotli/dec --><dependency><groupId>org.brotli</groupId><artifactId>dec</artifactId><version>${dec.version}</version></dependency></dependencies></dependencyManagement><dependencies><!--Spring Boot 执行器组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--Spring Cloud 基础--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter</artifactId></dependency><!--Spring Cloud 服务注册组件--><dependency><groupId>org.springframework.cloud</groupId><!--此处的依赖是SpringBoot2.0以后专用的,如果您使用的SpringBoot版本低于2.0请使用spring-cloud-starter-eureka-server--><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><!--Spring Boot Web组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 参数校验信息 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>2.1.9.RELEASE</version></dependency><!-- spring aop start --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><!-- spring aop end --><!--Spring Boot 测试组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20200518</version></dependency></dependencies></project>
(2)再次打包
Maven-demo-server-Lifecyle-package
[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 10.326 s[INFO] Finished at: 2021-03-21T20:08:03+08:00[INFO] ------------------------------------------------------------------------进程已结束,退出代码 0
找不到插件 ‘org.springframework.boot:spring-boot-maven-plugin:’
解决办法,指定 Maven 版本号
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.2.6.RELEASE</version><configuration><fork>true</fork><addResources>true</addResources></configuration></plugin></plugins></build>
spring-boot-maven-plugin:unknown的完美解决方法
“插件的某个版本”
<version>xxx</version>从插件所在的文件路径里寻找
“插件所在路径”=maven仓库路径+<groupId>+<artifactId>。
找到很多版本后,一个一个去试。下图是我的路径举例。
D:\Program Files\Maven\Repository\org\springframework\boot\spring-boot-maven-plugin