zoukankan      html  css  js  c++  java
  • 利用maven-war-plugin实现不同环境下的配置文件

    我这是一个标准的maven的目录结构,配置文件都在src/main/resources根目录下。因为要改成多环境的配置,所以只有properties的文件改变了(公共配置可以原地不动)

    1.将配置文件放到不同的文件夹下

    2.创建2个不同的profile,一个是生产环境配置(prod),一个是开发环境配置(dev),分别与步骤1中的两个文件夹名对应一致

    <profiles>
    	<!-- 不同环境的配置代码 -->
    	<profile>
    		<id>dev</id>
    		<properties>
    			<package.environment>dev</package.environment>
    		</properties>
    		<activation>
    			<activeByDefault>true</activeByDefault>
    		</activation>
    	</profile>
    	<profile>
    		<id>prod</id>
    		<properties>
    			<package.environment>prod</package.environment>
    		</properties>
    	</profile>
    </profiles>

    3.设置变量

    <package.environment>dev</package.environment>

    4.对resources下的目录进行处理

    <resources>
    	<resource>
    		<directory>src/main/resources</directory>
    		<filtering>false</filtering>
    		<excludes>
    			<exclude>prod/*</exclude>
    			<exclude>dev/*</exclude>
    		</excludes>
    	</resource>
    </resources>

    上面那个filtering,之前看别人的示例是true。发现这样的话,springContext.xml中类似{url}、{filters}(druid连接池的属性,本来用prod/jdbc.properties和dev/jdbc.properties的配置)就变成了pom.xml中url的属性值了(替换成了http://maven.apache.org

    5. maven-war-plugin的配置

    <plugin>
    	<groupId>org.apache.maven.plugins</groupId>
    	<artifactId>maven-war-plugin</artifactId>
    	<version>2.3</version>
    	<configuration>
    		<archive>
    			<addMavenDescriptor>false</addMavenDescriptor>
    		</archive>
    		<warName>${project.artifactId}</warName>
    		<webResources>
    			<resource>
    				<directory>src/main/resources/${package.environment}</directory>
    				<targetPath>WEB-INF/classes</targetPath>
    				<filtering>true</filtering>
    			</resource>
    		</webResources>
    	</configuration>
    </plugin>

    上面的${project.artifactId}是pom.xml的内置属性,${package.environment}是定义的属性

    6.打包

    打包之前别忘了update下project,因为pom.xml已经被修改过了

    选择项目路径,填好打包命令(我是用的eclipse,所以省略了mvn的字样)

    package -P dev 就是用开发环境的配置,package -P prod就是用生产环境的配置

    打包成功后,看包结构,虽然也有dev/prod两个文件,但在src/main/resources根目录下已经生成了那三个配置文件,而我web.xml也只是加载了 src/main/resources根目录的配置文件,所以dev和prod对项目本身没有冲突

    =================================================================

    但是这样的话,eclipse在本地调试的话,没法用tomcat启动,所以改成用maven的tomcat来进行启动

    (tomcat7的命令是 tomcat7:run)

    1.配置maven的tomcat插件

    <plugin>
    	<groupId>org.apache.tomcat.maven</groupId>
    	<artifactId>tomcat7-maven-plugin</artifactId>
    	<version>2.2</version>
    	<configuration>
    		<port>80</port>
    		<path>/fitness</path>
    		<uriEncoding>UTF-8</uriEncoding>
    		<server>tomcat7</server>
    	</configuration>
    </plugin>

    上面我用到了80的端口,用的tomcat7

    2.在依赖中不能添加tomcat的依赖包

    3.对javax.servlet-api和javaee-api的scope要加限制,限制成provided

    如下:

    这样通过命令就能启动了

    参考:https://blog.csdn.net/chenjing928/article/details/79883104

  • 相关阅读:
    电脑快捷键大全
    js实现页面跳转
    List转换为字符串方法
    Bootstrap4显示和隐藏元素
    反向代理和正向代理区别
    springboot系列一:工作环境无法联网下快速搭建boot项目
    英语故事系列:冠状病毒传播或导致2020首季度全球经济出现萎缩
    BBS网站的制作
    Flask-SQLAlchemy数据库操作
    step-by-step install Nginx反向代理服务器(Ubuntu 18.04 LTS)(转)
  • 原文地址:https://www.cnblogs.com/dulinan/p/12033014.html
Copyright © 2011-2022 走看看