Maven源配置指导
代理仓库配置
<mirrors>
<!-- 配置阿里云代理仓库
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
-->
<!-- 配置个人私服 -->
<mirror>
<id>maven-public</id>
<mirrorOf>*</mirrorOf>
<url>https://test-mvc.kdaiyu.cn/repository/maven-public/</url>
</mirror>
</mirrors>
私服账号配置
<servers>
<!-- id的名字要和 distributionManagement 中repository的id一致 -->
<server>
<id>maven-releases</id>
<username>admin</username>
<password>8ee56366</password>
</server>
<server>
<id>maven-snapshots</id>
<username>dev</username>
<password>123456</password>
</server>
</servers>
配置构建插件
<build>
<resources>
<resource>
<filtering>true</filtering> <!-- 替换文件中的内容 -->
<directory>src/main/resources</directory>
<includes>
<!-- 配置文件全部放nacos配置中心,只保留程序启动连接nacos配置信息 -->
<include>bootstrap.yaml</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${project.compiler.plugin.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<!-- maven进行配置信息替换时跳过文件类型 -->
<nonFilteredFileExtensions>
<nonFilteredFileExtension>pfx</nonFilteredFileExtension>
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
<nonFilteredFileExtension>txt</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
</build>
替换配置文件内容,跳过install和deploy
<build>
<filters>
<!-- 按环境替换配置文件中的变量 -->
<filter>${basedir}/src/main/resources/bootstrap.yaml</filter>
</filters>
<plugins>
<!-- springboot 项目打包必备,不能删除 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
</plugin>
<!-- deploy 跳过,一般用在不需要部署到私服仓库的模块 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<!-- install 跳过,一般用不需要安装到本地仓库的模块 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
完整的多模块,多环境配置示例
<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/maven-v4_0_0.xsd">
<name>kdaiyu-cloud</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.14</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<modules>
<module>../kdaiyu-common</module>
<module>../kdaiyu-main</module>
<module>../kdaiyu-doctor</module>
<module>../kdaiyu-hospital</module>
<module>../kdaiyu-gateway</module>
<module>../kdaiyu-finance</module>
</modules>
<groupId>com.accurad.amol</groupId>
<artifactId>kdaiyu-cloud</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<!-- 按环境定义变量值 -->
<profiles>
<profile>
<!-- 本地开发环境,只替换配置信息,不做文件剔除 -->
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<springbooot.devtool.scope>runtime</springbooot.devtool.scope>
<spring.profiles.active>dev</spring.profiles.active>
<nacos.namespace.id>NACOS-NAMESPACE-ID-kdaiyu-DEV</nacos.namespace.id>
<kdaiyu.common.basic.version>1.0-SNAPSHOT</kdaiyu.common.basic.version>
<kdaiyu.common.api.version>1.0-SNAPSHOT</kdaiyu.common.api.version>
<kdaiyu.common.web.version>1.0-SNAPSHOT</kdaiyu.common.web.version>
<kdaiyu.common.entity.version>1.0-SNAPSHOT</kdaiyu.common.entity.version>
</properties>
<build>
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<!-- 测试环境 -->
<id>test</id>
<properties>
<springbooot.devtool.scop>provided</springbooot.devtool.scop>
<spring.profiles.active>dev</spring.profiles.active>
<nacos.namespace.id>NACOS-NAMESPACE-ID-kdaiyu-DEV</nacos.namespace.id>
<kdaiyu.common.basic.version>1.0-SNAPSHOT</kdaiyu.common.basic.version>
<kdaiyu.common.api.version>1.0-SNAPSHOT</kdaiyu.common.api.version>
<kdaiyu.common.web.version>1.0-SNAPSHOT</kdaiyu.common.web.version>
<kdaiyu.common.entity.version>1.0-SNAPSHOT</kdaiyu.common.entity.version>
</properties>
<build>
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<includes>
<!-- 配置文件全部放nacos配置中心,只保留程序启动连接nacos配置信息 -->
<include>bootstrap.yaml</include>
</includes>
</resource>
</resources>
</build>
</profile>
<profile>
<!-- 生产环境 -->
<id>prod</id>
<properties>
<springbooot.devtool.scop>provided</springbooot.devtool.scop>
<spring.profiles.active>prod</spring.profiles.active>
<nacos.namespace.id>NACOS-NAMESPACE-ID-kdaiyu-PRO</nacos.namespace.id>
<kdaiyu.common.basic.version>1.0-release</kdaiyu.common.basic.version>
<kdaiyu.common.api.version>1.0-release</kdaiyu.common.api.version>
<kdaiyu.common.web.version>1.0-release</kdaiyu.common.web.version>
<kdaiyu.common.entity.version>1.0-release</kdaiyu.common.entity.version>
</properties>
<build>
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<includes>
<include>bootstrap.yaml</include>
</includes>
</resource>
</resources>
</build>
</profile>
</profiles>
<!-- 全局公共配置 -->
<properties>
<kdaiyu.versoin>1.0</kdaiyu.versoin>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<project.compiler.plugin.version>3.8.1</project.compiler.plugin.version>
<aliyun-spring-boot.version>1.0.0</aliyun-spring-boot.version>
<spring-boot.version>2.6.14</spring-boot.version>
<spring-cloud.versoin>2021.0.8</spring-cloud.versoin>
<spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
<hutool.version>5.8.18</hutool.version>
<mybatis-flex.version>1.5.6</mybatis-flex.version>
<mybatis.version>2.2.2</mybatis.version>
<maven.repository.url>https://test-mvc.kdaiyu.cn/repository</maven.repository.url>
<maven.test.skip>true</maven.test.skip>
<!-- nacos 配置,生产环境需要替换为有权限读写账号 -->
<nacos.user.name>nacos_dev</nacos.user.name>
<nacos.user.password>nacos_dev123</nacos.user.password>
<nacos.server.address>192.168.10.48:8848</nacos.server.address>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- 只添加核心工具包,其他工具按需在子模块pom.xml中添加-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<!-- Java工具集:https://doc.hutool.cn/pages/index/ -->
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 管理版本依赖,此次写明版本号在子模块dependencies,子模块中按需引入 -->
<dependencyManagement>
<dependencies>
<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>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.versoin}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<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>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>aliyun-spring-boot-dependencies</artifactId>
<version>${aliyun-spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- 工具包,各种util包,参考文档 https://doc.hutool.cn/pages/index/ -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-bom</artifactId>
<version>${hutool.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-spring-boot-starter</artifactId>
<version>${mybatis-flex.version}</version>
</dependency>
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-processor</artifactId>
<version>${mybatis-flex.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.15</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.2</version>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>
<repository>
<id>maven-public</id>
<url>${maven.repository.url}/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-public</id>
<url>${maven.repository.url}/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<distributionManagement>
<repository>
<id>maven-releases</id>
<url>${maven.repository.url}/maven-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<url>${maven.repository.url}/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${project.compiler.plugin.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<!-- maven进行配置信息替换时跳过文件类型 -->
<nonFilteredFileExtensions>
<nonFilteredFileExtension>pfx</nonFilteredFileExtension>
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
<nonFilteredFileExtension>txt</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
</build>
</project>
配置文件替换
## 除nacos配置以外走线上nacos配置中心,本地开发调试可在当前文件修改覆盖。
spring:
application:
name: @project.name@
profiles:
active: @spring.profiles.active@
cloud:
nacos:
server-addr: @nacos.server.address@
username: @nacos.user.name@
password: @nacos.user.password@
config:
file-extension: yaml
namespace: @nacos.namespace.id@
name: finance
group: FIN_GROUP
shared-configs: # 共享配置
- {data-id: kdaiyu-app.yaml, group: DEFAULT_GROUP, refresh: true}
# extension-configs: # 扩展配置
# - { data-id: finance-xxxx.yaml, group: FIN_GROUP, refresh: true }
discovery:
server-addr: @nacos.server.address@
namespace: @nacos.namespace.id@
group: kdaiyu_GROUP