一、先创建一个管理模块的父项目:

1、创建一个 MavenProject ,勾选 Create a simple project (skip archetype selection) 


2、填写上 Group IdArtifact IdPackaging一定要选择 pom



3、将下面的配置复制到上面创建的项目 pom.xml 文件中:


<properties>
   <java.version>1.8</java.version>
   <maven.compiler.source>${java.version}</maven.compiler.source><!-- 编译到源码版本 -->
   <maven.compiler.target>${java.version}</maven.compiler.target><!-- 编译到target版本 -->
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- 整个项目的源码编码 -->
   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!-- 输出编码 -->
</properties>

<!-- 以下是管理的模块 -->
<modules>

</modules>

<!-- 项目协议(Apache 2.0) -->
<licenses>
   <license>
      <name>Apache 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
   </license>
</licenses>

<!-- 开发者 -->
<developers>
   <developer>
      <id>mchweb</id>
      <name>mchweb</name>
      <email>admin@mchweb.com</email>
   </developer>
</developers>

<!-- 管理依赖 -->

<!-- 多环境配置 -->
<profiles>
   <profile>
      <id>default</id><!-- 自定义名称 如:dev、pro、release ... -->
      <activation>
         <activeByDefault>true</activeByDefault><!-- 默认激活 -->
      </activation>
      <properties><!-- 仅当前环境生效 -->
         <spring-javaformat.version>0.0.12</spring-javaformat.version>
      </properties>
      <build>
         <plugins>
            <!-- java格式化插件,以Spring编码规范格式化代码 -->
            <plugin>
               <groupId>io.spring.javaformat</groupId>
               <artifactId>spring-javaformat-maven-plugin</artifactId>
               <version>${spring-javaformat.version}</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-surefire-plugin</artifactId>
               <configuration>
                  <includes><include>**/*Tests.java</include></includes>
                  <excludes><exclude>**/Abstract*.java</exclude></excludes>
                  <systemPropertyVariables>
                     <java.security.egd>file:/dev/./urandom</java.security.egd>
                     <java.awt.headless>true</java.awt.headless>
                  </systemPropertyVariables>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-enforcer-plugin</artifactId>
               <executions>
                  <execution>
                     <id>enforce-rules</id>
                     <goals><goal>enforce</goal></goals>
                     <configuration>
                        <rules>
                           <bannedDependencies>
                              <excludes><exclude>commons-logging:*:*</exclude></excludes>
                              <searchTransitive>true</searchTransitive>
                           </bannedDependencies>
                        </rules>
                        <fail>true</fail>
                     </configuration>
                  </execution>
               </executions>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-install-plugin</artifactId>
               <configuration><skip>true</skip></configuration>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-javadoc-plugin</artifactId>
               <configuration><skip>true</skip></configuration>
               <inherited>true</inherited>
            </plugin>
         </plugins>
      </build>
   </profile>
</profiles>

<!-- 配置远程仓库 -->
<repositories>
   <repository>
      <id>spring-milestone</id>
      <name>Spring Milestone</name>
      <url>https://repo.spring.io/milestone</url>
      <snapshots>
         <enabled>false</enabled>
      </snapshots>
   </repository>
   <repository>
      <id>spring-snapshot</id>
      <name>Spring Snapshot</name>
      <url>https://repo.spring.io/snapshot</url>
      <snapshots>
         <enabled>true</enabled>
      </snapshots>
   </repository>
</repositories>

<!-- 插件仓库 -->
<pluginRepositories>
   <pluginRepository>
      <id>spring-milestone</id>
      <name>Spring Milestone</name>
      <url>https://repo.spring.io/milestone</url>
      <snapshots>
         <enabled>false</enabled>
      </snapshots>
   </pluginRepository>
   <pluginRepository>
      <id>spring-snapshot</id>
      <name>Spring Snapshot</name>
      <url>https://repo.spring.io/snapshot</url>
      <snapshots>
         <enabled>true</enabled>
      </snapshots>
   </pluginRepository>
</pluginRepositories>

注:多环境配置、配置远程仓库、插件仓库,可按需配置,不一定全部都配置。


二、创建依赖管理项目:

1、选中之前创建的父项目 com-temp-cloud   

2、右键新建一个 MavenModule 项目   



3、勾选 Create a simple project (skip archetype selection) ,

4、ModuleName 填写 com-temp-cloud-dependencies,规范是 父 artifactId 加上 -dependencies



5、Group Id: 填写 com.temp.cloud,与父项目一样,

6、Packaging一定要选择 pom      




7、将下面的配置复制到 com-temp-cloud-dependencies 项目的 pom.xml 中:


<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>2.2.8.RELEASE</version>
   <relativePath />
</parent>

<properties>
   <!-- Springboot 2.2.x 必须用Hoxton,Springboot 2.1.x 必须用Greenwich 按官方版本对应配置 -->
   <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
   <spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
</properties>

<licenses>
   <license>
      <name>Apache 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
   </license>
</licenses>

<developers>
   <developer>
      <id>mchweb</id>
      <name>mchweb</name>
      <email>admin@mchweb.com</email>
   </developer>
</developers>

<dependencyManagement>
   <dependencies>
      <!-- Spring Cloud -->
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-dependencies</artifactId>
         <version>${spring-cloud.version}</version>
         <type>pom</type>
         <scope>import</scope>
      </dependency>
      <!-- Spring Cloud Alibaba -->
      <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-alibaba-dependencies</artifactId>
         <version>${spring-cloud-alibaba.version}</version>
         <type>pom</type>
         <scope>import</scope>
      </dependency>
   </dependencies>
</dependencyManagement>

<dependencies>
   <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId> <scope>provided</scope>
   </dependency>
</dependencies>

<build>
   <plugins>
      <!-- Compiler 插件, 设定 JDK 版本 -->
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
         <configuration>
            <showWarnings>true</showWarnings>
         </configuration>
      </plugin>

      <!-- 打包 jar 文件时,配置 manifest 文件,加入 lib 包的 jar 依赖 -->
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
         <configuration>
            <archive>
               <addMavenDescriptor>false</addMavenDescriptor>
            </archive>
         </configuration>
         <executions>
            <execution>
               <configuration>
                  <archive>
                     <manifest>
                        <!-- Add directory entries -->
                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                        <addClasspath>true</addClasspath>
                     </manifest>
                  </archive>
               </configuration>
            </execution>
         </executions>
      </plugin>

      <!-- resource -->
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-resources-plugin</artifactId>
      </plugin>

      <!-- install -->
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-install-plugin</artifactId>
      </plugin>

      <!-- clean -->
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-clean-plugin</artifactId>
      </plugin>

      <!-- ant -->
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-antrun-plugin</artifactId>
      </plugin>

      <!-- dependency -->
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-dependency-plugin</artifactId>
      </plugin>
   </plugins>

   <pluginManagement>
      <plugins>
         <!-- Java Document Generate -->
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
               <execution>
                  <phase>prepare-package</phase>
                  <goals>
                     <goal>jar</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>

         <!-- YUI Compressor (CSS/JS压缩) -->
         <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>yuicompressor-maven-plugin</artifactId>
            <version>1.5.1</version>
            <executions>
               <execution>
                  <phase>prepare-package</phase>
                  <goals>
                     <goal>compress</goal>
                  </goals>
               </execution>
            </executions>
            <configuration>
               <encoding>UTF-8</encoding>
               <jswarn>false</jswarn>
               <nosuffix>true</nosuffix>
               <linebreakpos>30000</linebreakpos>
               <force>true</force>
               <includes>
                  <include>**/*.js</include>
                  <include>**/*.css</include>
               </includes>
               <excludes>
                  <exclude>**/*.min.js</exclude>
                  <exclude>**/*.min.css</exclude>
               </excludes>
            </configuration>
         </plugin>
      </plugins>
   </pluginManagement>

   <!-- 资源文件配置 -->
   <resources>
      <resource>
         <directory>src/main/java</directory>
         <excludes>
            <exclude>**/*.java</exclude>
         </excludes>
      </resource>
      <resource>
         <directory>src/main/resources</directory>
      </resource>
   </resources>
</build>

<repositories>
   <repository>
      <id>aliyun-repos</id>
      <name>Aliyun Repository</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
      <releases>
         <enabled>true</enabled>
      </releases>
      <snapshots>
         <enabled>false</enabled>
      </snapshots>
   </repository>

   <repository>
      <id>sonatype-repos</id>
      <name>Sonatype Repository</name>
      <url>https://oss.sonatype.org/content/groups/public</url>
      <releases>
         <enabled>true</enabled>
      </releases>
      <snapshots>
         <enabled>false</enabled>
      </snapshots>
   </repository>
   <repository>
      <id>sonatype-repos-s</id>
      <name>Sonatype Repository</name>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
      <releases>
         <enabled>false</enabled>
      </releases>
      <snapshots>
         <enabled>true</enabled>
      </snapshots>
   </repository>

   <repository>
      <id>spring-snapshots</id>
      <name>Spring Snapshots</name>
      <url>https://repo.spring.io/snapshot</url>
      <snapshots>
         <enabled>true</enabled>
      </snapshots>
   </repository>
   <repository>
      <id>spring-milestones</id>
      <name>Spring Milestones</name>
      <url>https://repo.spring.io/milestone</url>
      <snapshots>
         <enabled>false</enabled>
      </snapshots>
   </repository>
</repositories>

<pluginRepositories>
   <pluginRepository>
      <id>aliyun-repos</id>
      <name>Aliyun Repository</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
      <releases>
         <enabled>true</enabled>
      </releases>
      <snapshots>
         <enabled>false</enabled>
      </snapshots>
   </pluginRepository>

</pluginRepositories>


注意,这里需要修改几点内容:

(1)创建项目后,pom.xml文件内容如下:


<parent>
  <groupId>com.temp.cloud</groupId>
  <artifactId>com-temp-cloud</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>com-temp-cloud-dependencies</artifactId>
<packaging>pom</packaging>


(2)将其修改为:


<groupId>com.temp.cloud</groupId>
<version>0.0.1-SNAPSHOT</version>
<artifactId>com-temp-cloud-dependencies</artifactId>
<packaging>pom</packaging>


其实就是:

删除<parent>,因为已经将SpringBoot设置为<parent>   

完善自己的groupId、artifactId   


(3)修改父项目 com-temp-cloud 的 pom.xml,在 <!-- 管理依赖 --> 下方添加如下内容:


<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>com.temp.cloud</groupId>
			<artifactId>com-temp-cloud-dependencies</artifactId>
			<version>${project.version}</version>
			<type>pom</type>
			<scope>import</scope><!-- 实现多继承 -->
		</dependency>
	</dependencies>
</dependencyManagement>



三、创建用户管理项目模块:

1、选中 com-temp-cloud 项目,右键新建一个 Maven Module   

2、勾选 Create a simple project (skip archetype selection) ,

3、Module Name 填写 com-temp-cloud-user,规范是 父 artifactId 加上 模块名



4、Packaging: 现在选择 jar   



5、pom.xml 完整内容如下:


<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>com.temp.cloud</groupId>
      <artifactId>com-temp-cloud</artifactId>
      <version>0.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>com-temp-cloud-user</artifactId>

   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-data-jdbc</artifactId>
      </dependency>
      <!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> -->
      <!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> -->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-jdbc</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-mail</artifactId>
      </dependency>
      <!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> -->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
      </dependency>

      <dependency>
         <!-- 服务注册与发现 -->
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      </dependency>

      <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
      </dependency>
      <dependency>
         <groupId>org.mybatis.spring.boot</groupId>
         <artifactId>mybatis-spring-boot-starter</artifactId>
         <version>2.1.3</version>
      </dependency>

      <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>druid-spring-boot-starter</artifactId>
         <version>1.1.23</version>
      </dependency>
      <dependency>
         <groupId>com.baomidou</groupId>
         <artifactId>mybatis-plus-boot-starter</artifactId>
         <version>3.3.2</version>
      </dependency>

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-devtools</artifactId>
         <scope>runtime</scope>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <scope>runtime</scope>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-configuration-processor</artifactId>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
         <exclusions>
            <exclusion>
               <groupId>org.junit.vintage</groupId>
               <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
               <!-- 打成jar包程序入口路径 -->
               <mainClass>com.temp.UserApplication</mainClass>
            </configuration>
         </plugin>
      </plugins>
   </build>

</project>


6、创建启动类和Controller类:


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class UserApplication {
   public static void main(String[] args) {
      SpringApplication.run(UserApplication.class, args);
   }
}
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {
   @GetMapping("/user/{id}")
   public Object product(@PathVariable Integer id) {
      return "我是【用户】对象【" + id + "】";
   }

   @Value("${username:lily}")
   private String username;

   @GetMapping("/username")
   public String get() {
      return username;
   }
}


7、创建application.properties配置文件:


server.port=8887

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT
spring.datasource.username=test
spring.datasource.password=1


8、直接启动:


报错 endpoint is blank,暂时不管


启动后,浏览器输入 http://localhost:8887/user/2 查看是否为想要的结果,测试项目是否创建成功