当前位置: 首页 > news >正文

邯郸网站建设维护/武威网站seo

邯郸网站建设维护,武威网站seo,wordpress 装修主题,怎么做网站链接的快捷方式前言 先说明一下,这个架构以后可是要连上配置中心来读取初始化配置的,譬如,数据库信息,redis缓存配置,fastdfs的地址端口,sms短信发送的账号信息,其中配置中心有:test、ppe&#xf…

前言

先说明一下,这个架构以后可是要连上配置中心来读取初始化配置的,譬如,数据库信息,redis缓存配置,fastdfs的地址端口,sms短信发送的账号信息,其中配置中心有:test、ppe(预发布)、product(正式环境)三个,所以,怎么样都逃不开打包不同环境下面的包这个经典问题了。
参考:
一起开发一个文件服务器–3、配置中心和redis(1)gradle切换环境及变量替换【试验稿】

下面是具体过程了。

配置过程

gradle根据环境不同打包不同的配置文件

注意,在没有配置中心之前,都是用properties这种文件做配置的,其中很重要的一环是,如何在不同环境–包括开发环境,测试环境,线上环境等等切换不同的配置,不过,有了配置中心就不用做这一步了,剩下需要做的其实是,根据不同的打包方式确认打包参数的内容

下面来进行相关配置

要点说明1、gradle接收环境变量

首先,要明确,在打包的时候是可以用命令行自定义属性的,例如:
在这里插入图片描述

在这里插入图片描述
即,gradle命令后面可以带 -P 或者 -D来携带参数,我们采用的是后一种:
下面我们添加一个小测试来进行说明:
在根目录的build.gradle上面添加以下代码

/***定义项目环境变量***/String _ENV_="test" //默认是测试环境
if(System.getProperty("env")!=null&&!System.getProperty("env").isEmpty()){String tmpEnv=System.getProperty("env").toLowerCase().trim();if(!tmpEnv.equals("test")&&!tmpEnv.equals("ppe")&&!tmpEnv.equals("product")){println "!!!您自定义的环境无效!环境变量只能在test、ppe、product中三选一!!";}else{_ENV_=tmpEnv;}
}
println "当前指定环境为:$_ENV_"/***定义项目环境变量 end***/

在这里插入图片描述

然后在FileServerWebApp下,执行命令看看,譬如:

gradle -q idea -Denv=product

在这里插入图片描述

可以看到这样能够成功传入环境参数。

要点说明2、根据环境变量以及设置的配置中心ip等参数,生成配置文件

Gradle替换变量的小技巧

有空的话看看这个,基本上就用到复制文件,替换变量而已。

第一,在根项目的build.gradle中设置xxl-conf配置中心的相关参数,譬如:
在这里插入图片描述

代码如下:

/***rootProject配置 开始***/
/***这个配置中心是需要手工配置的。***/
ext{AppSetting = [//--环境变量由系统自动判断及接收,在编译时候添加 -Denv=test或者ppe或者product即可。"env" : _ENV_,//配置中心服务器地址"xxl_conf_admin_address":"http://localhost:7788/",//配置中心的密钥--注意,要与xxl-conf-admin设置的密钥一致,没有的话就留空"xxl_conf_access_token":"",//--配置中心会在本地建立一个镜像文件"xxl_conf_mirrorfile":"/data/sapplogs/xxl-conf/xxl-conf-mirror-sample.properties"]
}/***rootProject配置 结束***/

然后,准备一份需要被替换的配置文件,譬如,我就在根目录下面添加了一份这样的文件:
在这里插入图片描述
在根目录的conf下面有一份xxl-conf.properties,里面的内容有:

# xxl-conf
xxl.conf.admin.address=@xxl_conf_admin_address@
xxl.conf.env=@env@
xxl.conf.access.token=@xxl_conf_access_token@
xxl.conf.mirrorfile=@xxl_conf_mirrorfile@

注意到没有,@@之间的就是变量名称,这个与ext下面的AppSetting是一一对应的-----换而言之,我们等下就是要用AppSetting里面的变量来替换掉符号,然后生成一个可以用的配置文件。

然后,在根目录下面自定义一个所有模块项目都可以使用的任务,里面的大意是,一旦执行这个任务就会将根目录下面的xxl-conf.properties文件替换掉正常变量以后复制到模块的对应位置。
任务的定义如下:
在这里插入图片描述

好了,现在根目录的全部配置是这个:

plugins {id 'java'
}group 'net.w2p'
version '1.0-SNAPSHOT'/***定义项目环境变量***/String _ENV_="test" //默认是测试环境
if(System.getProperty("env")!=null&&!System.getProperty("env").isEmpty()){String tmpEnv=System.getProperty("env").toLowerCase().trim();if(!tmpEnv.equals("test")&&!tmpEnv.equals("ppe")&&!tmpEnv.equals("product")){println "!!!您自定义的环境无效!环境变量只能在test、ppe、product中三选一!!";}else{_ENV_=tmpEnv;}
}
println "当前指定环境为:$_ENV_"
/***定义项目环境变量 end***//***rootProject配置 开始***/
/***这个配置中心是需要手工配置的。***/
ext{AppSetting = [//--环境变量由系统自动判断及接收,在编译时候添加 -Denv=test或者ppe或者product即可。"env" : _ENV_,//配置中心服务器地址"xxl_conf_admin_address":"http://localhost:7788/",//配置中心的密钥--注意,要与xxl-conf-admin设置的密钥一致,没有的话就留空"xxl_conf_access_token":"",//--配置中心会在本地建立一个镜像文件"xxl_conf_mirrorfile":"/data/sapplogs/xxl-conf/xxl-conf-mirror-sample.properties"]
}/***rootProject配置 结束***//***所有项目共通***/
allprojects {sourceCompatibility = 1.8targetCompatibility = 1.8apply plugin: 'java'apply plugin: 'idea'apply plugin: 'groovy'ext{/***常见或主要第三方依赖版本号定义 begin***/globalSpringVersion = "5.1.4.RELEASE"globalSpringDataJpaVersion ="2.1.2.RELEASE"globalSpringBootVersion = '2.1.1.RELEASE'globalFastJsonVersion="1.2.54"globalMyBatisVersion="3.4.6"globalMyBatisSpringVersion="1.3.2" //mybatis-springglobalGoogleGuavaVersion="27.0.1-jre"globalDom4jVersion="1.6.1"globalJavaMailVersion="1.4.7"globalJsoupVersion="1.11.3" //--一个过滤html危险字符串api,用于web安全globalQuartzVersion="2.3.0"globalFlexmarkVersion="0.34.32" //--java对markdown语法的解释以及翻译apiglobalPostgresqlJdbcDriverVersion="42.2.5"globalQiniuSdkVersion="7.2.18"//--七牛上传下载客户端sdkglobalApacheAntVersion="1.10.5"globalGoogleZXingVersion="3.3.3"globalFastdfsClientVersion="1.27"globalLog4jVersion="1.2.17"globalSlf4jVersion="1.7.25"globalRedisClientVersion="2.10.1"globalFreemarkerVersion="2.3.28"globalSpringBootStaterVersionOfMyBatis="1.3.2"globalMysqlJdbcDriverVersion="5.1.40"globalApacheCommonLang3Version="3.8.1"/***常见或主要第三方依赖版本号定义 end***//****常见或者程序主要引用依赖定义 begin****///--这个是spring boot要直接compile进去的框架。ref4SpringBoot=[/***spring boot 相关依赖***/"org.springframework.boot:spring-boot:$globalSpringBootVersion","org.springframework.boot:spring-boot-starter:$globalSpringBootVersion","org.springframework.boot:spring-boot-starter-web:$globalSpringBootVersion",                "org.springframework.boot:spring-boot-starter-freemarker:$globalSpringBootVersion",                "org.springframework.boot:spring-boot-devtools:$globalSpringBootVersion"                ]//--这个是spring boot要compileOnly的类库ref4SpringBootProvided=["org.springframework.boot:spring-boot-dependencies:$globalSpringBootVersion",                ]//--这个是spring boot的测试框架,用testCompile导入ref4SpringBootTest=["org.springframework.boot:spring-boot-starter-test:$globalSpringBootVersion"                ]//--spring框架apiref4SpringFramework=["org.springframework:spring-web:$globalSpringVersion","org.springframework:spring-webmvc:$globalSpringVersion","org.springframework:spring-jdbc:$globalSpringVersion","org.springframework:spring-context-support:$globalSpringVersion",                "org.springframework.data:spring-data-jpa:$globalSpringDataJpaVersion","org.springframework:spring-test:$globalSpringVersion"                ]        //--jsp&servlet等javaweb容器api,通常都用 compileOnly引用的。ref4JspAndServletApi=["javax.servlet:javax.servlet-api:3.1.0","javax.servlet.jsp:jsp-api:2.2","javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1"                ]//--jstl等java web的tag标准api,引入的话要用compileref4Jstl=['taglibs:standard:1.1.2','jstl:jstl:1.2']//--mybatisref4MyBatis=["org.mybatis:mybatis:$globalMyBatisVersion"]ref4MybatisSpring=["org.mybatis:mybatis-spring:$globalMyBatisSpringVersion"]//--这是apache common 类库引用的地址ref4ApacheCommons = ['commons-lang:commons-lang:2.6','commons-logging:commons-logging:1.2','commons-io:commons-io:2.5','commons-fileupload:commons-fileupload:1.3.2','commons-codec:commons-codec:1.10','commons-beanutils:commons-beanutils:1.9.3','commons-httpclient:commons-httpclient:3.1','org.apache.httpcomponents:fluent-hc:4.3.6','org.apache.httpcomponents:httpclient:4.5.3','org.apache.httpcomponents:httpclient-cache:4.5.3','org.apache.httpcomponents:httpcore:4.4.8','org.apache.httpcomponents:httpmime:4.5.3','org.apache.curator:curator-framework:4.0.1','org.jfree:jfreechart:1.0.19','org.apache.velocity:velocity:1.7','org.apache.poi:poi:3.16'                ]//--redis clientref4RedisClient=["redis.clients:jedis:$globalRedisClientVersion"]ref4Freemarker=["org.freemarker:freemarker:$globalFreemarkerVersion"]//--这是阿里云短信引用的第三方类库ref4AliYunSms=['com.aliyun:aliyun-java-sdk-core:3.2.8','com.aliyun:aliyun-java-sdk-dysmsapi:1.1.0'                ]//--阿里云图片裁剪ref4AliSimpleImage=['com.alibaba:simpleimage:1.2.3']//--阿里fast json引用地址ref4FastJson=["com.alibaba:fastjson:$globalFastJsonVersion"]//--json-lib引用地址ref4JsonLib=["net.sf.json-lib:json-lib:2.4:jdk15"]//--jdom1&jdom2以及相关apiref4Jdom=['org.jdom:jdom2:2.0.6','org.jdom:jdom:1.1.3','joda-time:joda-time:2.9.7']//--google guavaref4GoogleGuava=["com.google.guava:guava:$globalGoogleGuavaVersion"]//--dom4jref4Dom4j=["dom4j:dom4j:$globalDom4jVersion"]ref4JavaMail=["javax.mail:mail:$globalJavaMailVersion"]ref4Jsoup=["org.jsoup:jsoup:$globalJsoupVersion"]ref4Quartz=["org.quartz-scheduler:quartz:$globalQuartzVersion","org.quartz-scheduler:quartz-jobs:$globalQuartzVersion"]ref4Flexmark=["com.vladsch.flexmark:flexmark-all:$globalFlexmarkVersion"]ref4PostgresqlJdbcDriver=["org.postgresql:postgresql:$globalPostgresqlJdbcDriverVersion"]ref4QiuniuSdkVersion=["com.qiniu:qiniu-java-sdk:$globalQiniuSdkVersion"]ref4ApacheAnt=["org.apache.ant:ant:$globalApacheAntVersion"]//--二维码ref4ZXing=["com.google.zxing:core:$globalGoogleZXingVersion","com.google.zxing:javase:$globalGoogleZXingVersion"]ref4FastdfsClient=["cn.bestwu:fastdfs-client-java:$globalFastdfsClientVersion"]ref4Log4j=["log4j:log4j:$globalLog4jVersion"]ref4Slf4jToLog4j=["org.slf4j:slf4j-log4j12:$globalSlf4jVersion"]/****常见或者程序主要引用依赖定义 end****/}idea {module {inheritOutputDirs = true}}tasks.withType(JavaCompile) {options.encoding = "UTF-8"}tasks.withType(GroovyCompile) {groovyOptions.encoding = "MacRoman"}repositories {maven{//更换为阿里的仓库url  'http://maven.aliyun.com/nexus/content/groups/public'}//有些jar包在中央仓库是没有的,需要手动添加上去
//        flatDir {  dirs 'local_jars' }
//        mavenCentral()}dependencies {testCompile group: 'junit', name: 'junit', version: '4.12'}/****自定义全局任务 begin****/task compileConfig{}compileConfig << {println "正在编译替换配置中心的配置文件,请稍后......."println "根项目目录为:$rootProject.rootDir"println "当前模块目录为:$project.projectDir"/***将配置文件复制到子模块的对应位置--当然,会替换掉相关变量****/copy {from "${rootProject.rootDir}/conf/"into "${project.projectDir}/src/main/resources/conf"filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: rootProject.AppSetting)}}
/****自定义全局任务 end****/}

下面,在FileServerWebApp目录下面执行compileConfig,查看输出的结果:
开始时候:
在这里插入图片描述

然后执行 product环境的配置生成:
在这里插入图片描述

好了,执行ppe的环境生成:
在这里插入图片描述

额,很多时候开发就是很麻烦的一件事,因为你要从a走到b往往不是一条直路,需要你绕道,跨栏,跳坑的。在配置xxl-conf的时候也是绕不开配置文件的。

http://www.lbrq.cn/news/1056763.html

相关文章:

  • 个人网站搭建平台/重庆网站网络推广
  • 中企动力科技做什么的/重庆百度seo排名
  • 湖南网站设计企业/深圳谷歌网络推广公司
  • 做网站的公司/微信推广引流加精准客户
  • 有没有清仓处理的网站/google搜索引擎免费入口
  • 上海网站建设备案号怎么恢复/一站式网络营销
  • 怎么做产品的网站/百度推广助手
  • 网站建设与推广实训小结/搜索引擎收录查询
  • 西安网络建设公司/北京网站优化排名
  • adobe photoshop/搜外seo
  • 麦云短链接/seo图片优化
  • 网站建设公司新/网站排名查询
  • 深圳东门步行街图片/网站seo站长工具
  • 上市公司做网站有什么用/google国外入口
  • 网站空间租用续费服务合同/软件拉新推广平台
  • 个人网站做废品回收/益阳网站seo
  • ai写作网站/近期新闻事件
  • 西樵乐从网站建设/百度指数有哪些功能
  • 网站设计的目的是什么/西安网站关键词优化推荐
  • 做婚纱摄影网站价格/网站维护是什么意思
  • 网站开发 定制 合同范本/百度知道首页
  • 网站建设 建站知识/域名注册多少钱
  • 京东网上购物商城官方网站/百度小说排行榜完本
  • 国内建网站公司/我要登录百度
  • 产品如何做网站地图/广州网站优化价格
  • 网站建设百度搜索到左边的图/seo的关键词无需
  • 一个空间怎么做多个网站/推广衣服的软文
  • e网科技网站/seo收费标准多少
  • 年度工作总结/seo快速排名关键词
  • 周口公司做网站/关键词搜索排名优化
  • python selenium环境安装
  • 大语言模型
  • 第七章课后综合练习
  • LSTM + 自注意力机制:精准预测天气变化的创新方案
  • Ethereum:智能合约开发者的“瑞士军刀”OpenZeppelin
  • openeuler离线安装软件