背景
和团队成员一起开发了一个WEB项目,个人负责的是后端,主要使用的是spring boot框架,和我一起进行开发的兄弟将代码放在了gitee上进行托管,今天将其他人的代码下载下来进行本地化发现了不少问题,在不断的摸索以及尝试中总结了一些经验
问题
将团队成员的代码下载下来之后打开发现是这样的
提示没有设置jdk便点击 setup jdk 进行设置,在弹出的页面中选择了1.8版本的jdk 并且点击Ok,虽然jdk已经更新很多版本,但是这个版本的还是经典
刚开始的时候察觉,后面越看越不对劲,终于发现了一些问题
先看左边,可以看到,左边的项目结构中
- main下面的java包 src/main/java
- main下面的resources src/main/resources
- main下面的test下面的Java包 src/test/java
都只是一个普通的文件夹,而正常的Spring boot项目中下它们应该是这样的:
故此需要逐个对它们进行标记,鼠标分别移动到上述包,右键,选中Mark Directory as,在下一级选项栏中选择和上图一样的图标的即可:
上述标记操作完成后的界面是这样的,满屏爆红,大量的注解没有生效,原因倒是好理解,看右边的箭头发现没有maven图标,没有导入和设置maven仓库:
没有就导入呗,鼠标移动到项目根目录上,右键,在弹出的面板中选择add framework support…
下拉,勾选Maven,点击ok
可以看到右边侧边栏已经有maven图标了,但是会发现没有依赖被导入
因为考虑到IDEA有自带的maven仓库,虽然自己之前已经在全局设置中将maven仓库是自己下载的修改了镜像的版本,但是为了确保maven仓库是自己下载的,去验证了一下。点击File,在弹出的页面中选择Settings
找到Build,Execution,Deploylment下的Build Tools,展开,找到Maven,可以发现确实是自己的本地仓库,如果不是还得进行修改,点击OK退出
然后发现问题没有解决,看着大片的爆红,愣了好一会…
突然想起来估计是依赖没有导入,便去查看pom.xml文件,一共有两个,虽然不是很理解,但是估计橙色图标的是子项目的maven配置文件,而蓝色的是maven总的配置文件,并没有进行求证
可以看见,蓝色的很干净,所有的项目所需依赖都写在了橙色的配置文件中
之前自己的本地仓库中是下有Spring boot的相关依赖,相关的依赖全部写在了子项目中的maven配置文件中,却没有识别,故此将spring boot项目需要的依赖写在总的配置文件中,全部项目生效,全部代码如下:
<?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>
<!-- build by tuegue-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>groupId</groupId>
<artifactId>VisualDust-AnalystHugoBackYard-master</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<kotlin.version>1.4.0-rc</kotlin.version>
<!-- build by tuegue-->
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test</artifactId>
<version>${kotlin.version}</version>
<scope>test</scope>
</dependency>
<!--the next two dependency build by TueGue-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<repositories>
<repository>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>bintray.kotlin.eap</id>
<name>Bintray Kotlin EAP Repository</name>
<url>https://dl.bintray.com/kotlin/kotlin-eap</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>bintray.kotlin.eap</id>
<name>Bintray Kotlin EAP Repository</name>
<url>https://dl.bintray.com/kotlin/kotlin-eap</url>
</pluginRepository>
</pluginRepositories>
<build>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<sourceDirs>
<source>src/main/java</source>
<source>AnalystHugoBackYard/src/main/java</source>
</sourceDirs>
</configuration>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
<configuration>
<sourceDirs>
<source>src/test/java</source>
<source>AnalystHugoBackYard/src/test/java</source>
</sourceDirs>
</configuration>
</execution>
</executions>
<configuration>
<jvmTarget>1.8</jvmTarget>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
将原来子项目的pom.xml的内容替换掉总的pom.xml的原有内容然后发现一切都安静了:
在疯狂的下载jar包之后,发现依赖成功导入,运行按钮变成了熟悉的spring boot,如此做比较简单粗暴,肯定是有弊端的,但是目前暂时还没有想到更好的解决办法,暂且能用就行。