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

大连微信网站制作/今天刚刚的最新新闻

大连微信网站制作,今天刚刚的最新新闻,衡阳企业网站排名优化,外贸信息发布平台【转载:https://blog.csdn.net/blueheart20/article/details/52838093】 1. Maven中的profile设置 Maven是目前主流的项目代码结构管理工具和打包发布工具,在其中提供了profile方式,可以将不同的环境下的信息,基于profile来进行管…

【转载:https://blog.csdn.net/blueheart20/article/details/52838093】

1. Maven中的profile设置

  Maven是目前主流的项目代码结构管理工具和打包发布工具,在其中提供了profile方式,可以将不同的环境下的信息,基于profile来进行管理,所有的配置信息放入profile之内;

大家可以把profile当作一套环境下的独立一套配置来理解。

   示例如下, pom.xml中的配置部分内容:

<project><!--  省略其他部分内容 ---><profiles><profile><id>dev</id><activation><activeByDefault>true</activeByDefault></activation><properties><ab.key>testkey</ab.key></properties><build><filters><filter>src/main/resources/config/db.properties</filter><filter>src/main/resources/config/test.xml</filter></filters></build></profile><profile><id>test</id><properties><ab.key>anothertestkey</ab.key></properties><build><filters><filter>src/main/resources/config/db.properties</filter><filter>src/main/resources/config/test.xml</filter></filters></build></profile></profiles>
</project>

  这里使用了ab.key来表示不同环境下的配置信息,大家可以看到不同配置环境下的拥有相同key的值是各不相同的, testkey和anothertestkey.

  <activation>标签下的内容标识为在基于mvn的命令操作情况下,默认的profile指定,在命令行如果没有指定profile,则默认使用activeByDefault中设定的profile值。

2.  Profile实现配置信息动态过滤的依赖包

    主要的plugins如下所示:

  <project><!--这里省略其他部分的内容 --><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.19.1</version><configuration><skipTests>true</skipTests></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.0.1</version><configuration><encoding>UTF-8</encoding></configuration></plugin></plugins><resources><resource><directory>src/main/resources</directory><!-- <includes><include>**/*</include></includes> --><filtering>true</filtering></resource></resources></build>

   maven-surefire-plugin, 可选组件, 插件用来在maven构建生命周期的test phase执行一个应用的单元测试。它会产生两种不同形式的测试结果报告。

       使用方式: 使用该插件很简单,使用mvn surefire:test或者mvn test都可以运行工程下的单元测试。

       结果信息: 在工程的${basedir}/target/surefire-reports,目录下(basedir指的是pom文件所在的目录)

       主页地址: http://maven.apache.org/components/plugins/maven-surefire-plugin/

  maven-resources-plugin:  必选组件, 基于profile指定动态过滤配置信息

        使用方式:  mvn package -P profileName (or mvn deploy etc)

        结果信息:  将src/main/resources下的配置信息占位符替换为profile中指定的值

       主页地址: http://maven.apache.org/components/plugins/maven-resources-plugin/

     关于resources节点下的信息作用,这里是整个resources的总开关,filtering这里指定启用过滤功能,否则该功能将无法正常使用。 <directory>节点设定了扫描的目录,includes节点主要是从整体的角度设定具体的扫描目录或者文件;如果这里不指定的话,可以在各个profile之中指定具体需要扫描的配置文件,在build->filters->filter中指定特定的配置文件, 具体信息可以参照#1中的pom.xml示例。

   #1中的resources filter设置如下:

   ............<profile><id>test</id><properties><ab.key>anothertestkey</ab.key></properties><build><filters><filter>src/main/resources/config/db.properties</filter><filter>src/main/resources/config/test.xml</filter></filters></build></profile>...............

3.   profile文件使用示例

     3.1  创建maven项目

           打开Eclipse, 打开File--> New--> Maven Project, 创建maven项目:

           

     填写相应的项目groupId和artifactId信息:

         

        点击Finish按钮之后,创建项目成功

   3.2   项目结构以及相应的配置文件信息

          

       这里我们将配置文件test.xml和db.properties放入了src/main/resources目录下的config中。

      同时将maven的plugins按照#1的要求配置进入pom.xml文件中。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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.test</groupId><artifactId>mymaven</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>mymaven</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.19.1</version><configuration><skipTests>true</skipTests></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.0.1</version><configuration><encoding>UTF-8</encoding></configuration></plugin></plugins><resources><resource><directory>src/main/resources</directory><!-- <includes><include>**/*</include></includes> --><filtering>true</filtering></resource></resources></build><profiles><profile><id>dev</id><activation><activeByDefault>true</activeByDefault></activation><properties><ab.key>testkey</ab.key></properties><build><filters><filter>src/main/resources/config/db.properties</filter><filter>src/main/resources/config/test.xml</filter></filters></build></profile><profile><id>test</id><properties><ab.key>anothertestkey</ab.key></properties><build><filters><filter>src/main/resources/config/db.properties</filter><filter>src/main/resources/config/test.xml</filter></filters></build></profile></profiles>
</project>

   配置文件中的信息如下, test.xml中的内容:

<?xml version="1.0" encoding="UTF-8"?>
<info>${ab.key}</info>

   db.properties中的内容如下:

my.key2=${ab.key}

 ab.key在pom.xml中的不同profile中设定的相应值。

在pom.xml中设定了2个profile, test和dev, dev做为缺省的profile。

4.  执行打包或者发布操作,查看打包结果

    >>  mvn clean           # 清理上次打包的结果和临时文件

    >> mvn package -P dev -Dmaven.test.skip=true     # 打包,忽略测试部分

   然后接入生成的target目录,查看classes目录下的config, 查看db.properties和test.xml中的内容:

   

  maven的命令运行过程信息:

  

  然后我们就可以在打包之后的结果中,看到过滤之后的信息了。

  在Maven中-DskipTests和-Dmaven.test.skip=true的区别如下:

  •    -DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。
  •    -Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。

5.  在过程中碰到的问题以及解决办法

  Q1:  在打包过程中,发现配置信息,并未被正确的profile下的信息替换掉

   How  to fix it?

         a. 检查maven中的resources plugin是否被正确的引入, 在全局的filtering设置是否被打开,在build节点中的directory目录设置是否正确。另外,在特定的profile中设置的filter路径以及文件是否正确等

  Q2:  在打包过程中,配置文件被正确过滤替换了,但是配置文件不是被复制到特定的目录,比如config下,而是被放入了classes下的根目录了,为什么?

   How to fix it ?

          此类情况应是build-->resources下设置了includes信息,include了所有的文件或者include文件路径为缺省值,比如下面的设置:

  .....................<resources><resource><directory>src/main/resources</directory><includes><include>**/*</include></includes><filtering>true</filtering></resource></resources></build>
</project>

     这种情况下,将includes节点去掉,在profile中进行配置filter即可。

   Q3:  我的配置都是没有问题,但是依然发现配置文件中的占位符,没有被正确替换,问题在哪里?

   How to fix it ?

       请检查maven-resources-plugin是否被正确的引入到plugins的列表中。

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

相关文章:

  • 做网站的qq兼职/山东企业网站建设
  • 关于企业网站建设的必要性/百度竞价排名名词解释
  • 怎么查询网站有没有做网站地图/app运营方案
  • 营销型网站案例易网拓/教育机构排名
  • 哪里网站海报做的比较好/推广普通话绘画
  • 网站建设后期维护/今日实时热点新闻事件
  • 网络广告投放/windows优化大师破解版
  • 用什么做网站简单/南京seo新浪
  • 客户网站建设完成后需要什么/百度推广官方网站
  • 定制手机网站/舆情分析系统
  • linux系统服务器怎么做网站/龙南黄页全部电话
  • 提供网站技术支持/最新战争新闻事件今天
  • 找人做网站怎么做/资源
  • 那些网站可以做文案兼职/百度营销平台
  • 朝西村网站建设公司/百度问问首页
  • 北京知名的网站建设公司/上海seo优化培训机构
  • 中堂做网站/四川刚刚发布的最新新闻
  • 最新在线免费网站/怎样做竞价推广
  • 阿里云网站架构怎么做/怎么制作网页里面的内容
  • 网站手机端模板库/青岛快速排名
  • 成都网站建设优秀公司/百度关键字排名软件
  • 24小时在线客服/整站优化seo
  • 响应式模板网站建设/百度搜索下载
  • 江阴网站设计/长沙网站搭建优化
  • 湖南人文科技学院图书馆官网/3分钟搞定网站seo优化外链建设
  • 徐州最好网站建设/本地网络seo公司
  • 千库网ppt模板免费/北京债务优化公司
  • 怎么在网站上做链接/网站推广app
  • 网页浏览器打不开/seo刷网站
  • 购物网站排名大全/淘宝权重查询入口
  • golang的继承
  • 【Redis在在线表单提交防重复机制中的应用策略】
  • 使用纯NumPy实现回归任务:深入理解机器学习本质
  • 【openEuler构建测试环境或部署嵌入式系统】openEuler生态扩容新路径:内网穿透工具cpolar助力多场景落地
  • 第4章 程序段的反复执行4 多重循环练习(题及答案)
  • K8s DaemonSet 详解