springboot多模块在创建一个可以独立部署的模块时遇到的坑

springboot多模块在创建一个可以独立部署的模块时遇到的坑

要在现有的项目新增一个新的模块该模块可以独立部署
思路:首先肯定是复制已有的模块来进行修改,创建启动类pom文件要集成maven统一管理插件
在这里插入图片描述
这个是我的模块,user-sign复制user-system模块,各自的启动类
在这里插入图片描述
接下来重点来了关于pom.xml文件
如果要让他自己能够运行则需要添加 特别是要引入配置模块和打包插件spring-boot-maven-plugin

<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2019-2029 geekidea(https://github.com/geekidea)
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<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>com.yunping</groupId>
        <artifactId>yp-user</artifactId>
        <version>2.0</version>
    </parent>
    <artifactId>user-sign</artifactId>
    <name>user-sign</name>
    <description>签章模块</description>
    
    <dependencies>
    <!--引入配置的模块-->
        <dependency>
            <groupId>com.yunping</groupId>
            <artifactId>user-bootstrap</artifactId>
            <version>2.0</version>
        </dependency>
        <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--feign的配置-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>
    </dependencies>
    <!--打包插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>
</project>

这样子就能mvn install了

遇到的问题一

因为我这个模块里面也有调用user_system的一些方法
我在pom.xml里面直接引用

        <dependency>
            <groupId>com.yunping</groupId>
            <artifactId>user-system</artifactId>
            <version>2.0</version>
            <scope>compile</scope>
        </dependency>

发现mvn打包不了,所以我上面的包引入了nacos和feign配置。
虽然他们同属于一个项目但由于都有各自的启动类,打包方式也是独立的,所以其实是两个项目调用

需要在配置文件里面配置nacos

spring:
  application:
    name: user-sign  #服务名称
  cloud:
    nacos:
      config:
      #      server-addr: 192.168.0.x:8848 # nacos配置中心的地址
      #file-extension: yml #指定yaml格式配置
      #namespace: ${nacos.namespace} #命名空间
      #group: test
      discovery:
        server-addr:  127.0.0.1:8848 #nacos注册中心的地址
        #prefix: ${spring.application.name}
        #namespace: ${nacos.namespace}
        #group: test
#要调用的那个系统
visit:
  userCenterPath: user-center

调用feign

@FeignClient(
        name = "${visit.userCenterPath}",configuration = FeignSupportConfig.class
)
public interface FeignUserService {


    //房产登录根据账号查询公司信息接口
    //根据机构id查询
    @RequestMapping(value = "/api/userCenter/xx", method = RequestMethod.POST,
            consumes = "application/json;charset=UTF-8"
    )
    SysOrg getSysOrgById(@RequestParam("id") String id);
    }

不要忘了在启动类里面配置

@EnableDiscoveryClient//注册发现
@EnableFeignClients//服务调用feign

如果不了解nacos可以百度入门

遇到的问题二

现在是不是大功告成了,别急我还碰到一个问题
我要把代码提交到git上面,我发现怎么那么多的class文件
发现是少传了一个文件.gitignore的作用
在git中如果想忽略掉某个文件

/target/
/classes
!.mvn/wrapper/maven-wrapper.jar

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/build/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

.DS_Store

*.log
logs

*.rdb

把多余提交的class文件进行删除执行一下命令就好了
git rm -r --cached .
git add . 重新提交(注意如果有改动其他代码这个也会提交)这一步可以用idea手动需要上传的东西
#注意: "update .gitignore" Linux是单引号,windows是双引号
git commit -m "update .gitignore"
git push -u origin master