• 利用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

  • 相关阅读:
    Tomcat 性能监控与调优
    04 使用 BTrace 进行拦截调试
    03 JVisualVM(本地和远程可视化监控)
    02 jmap+MAT(内存溢出)、jstack(线程、死循环、死锁)
    01 JVM的参数类型、jinfo & jps(参数和进程查看)、jstat(类加载、垃圾收集、JIT 编译)
    69_缓存预热解决方案:基于storm实时热点统计的分布式并行缓存预热
    66_讲给Java工程师的史上最通俗易懂Storm教程:纯手工集群部署
    57_分布式缓存重建并发冲突问题以及zookeeper分布式锁解决方案
    54_基于nginx+lua+java完成多级缓存架构的核心业务逻辑
    53_部署分发层nginx以及基于lua完成基于商品id的定向流量分发策略
  • 原文地址:https://www.cnblogs.com/dulinan/p/12033014.html
Copyright © 2020-2023  润新知