配置开发环境测试环境线上生产环境

1.正确打包

项目有三种环境:

1.本地开发环境(local)

2.开发测试环境(dev)

3.线上生产环境(product)

不同的环境有不同的配置,比如数据库连接什么的....maven打包时默认去resources文件夹下打包这些配置文件,放在WEB-INF/classes下,然后再打成war包,就能用了...现在通过修改pom.xml文件,增加三种配置,让maven打包时选择打包不同文件夹下的配置文件到WEB-INF/classes下,这样就省事儿了....

如图所示,resources下dev,local,product三个文件夹,分别对应三种环境。

下面是pom.xml主要修改:

<!--配置参数-->
<profiles>
    <profile>
        <id>local</id>
        <properties>
            <package.environment>local</package.environment>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>product</id>
        <properties>
            <package.environment>product</package.environment>
        </properties>
    </profile>
    <profile>
        <id>dev</id>
        <properties>
            <package.environment>dev</package.environment>
        </properties>
    </profile>
</profiles> 
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>local/*</exclude>
                <exclude>product/*</exclude>
                <exclude>dev/*</exclude>
            </excludes>
        </resource>
    </resources>
  <!-- war打包插件, 设定war包名称不带版本号 -->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.3</version>
        <configuration>
            <warSourceExcludes>*/lib/jsp-api-2.2.jar</warSourceExcludes>
            <warName>gcTaobao</warName>
            <webResources>
                <!--动态指定文件-->
                <resource>
                    <directory>src/main/resources/${package.environment}</directory>
                    <targetPath>WEB-INF/classes</targetPath>
                    <filtering>true</filtering>
                </resource>
            </webResources>
        </configuration>
    </plugin></build>

1. <profiles>标签里的三个<profile>是分别指local , dev ,product 三个参数。

2.<resources>标签里<excludes>确认在打包时不打包对应三个文件夹以及里面的文件。

3.org.apache.maven.plugins插件<webResources>动态指定参数${package.environment}对应文件夹下的文件到WEB-INF/classes下。

到此就配置好了:

下面是maven命令

然后就可以用mvn -P local package 或者mvn -P install 就可以打包成功了。

2.jetty本地debug配置

按照上面的配置,打出的war可以正确使用,但是在使用maven jetty插件时,jetty自动加载的时target/classes中的文件。你可以发现使用上面的配置编译出来的target/classes的文件里没有对应的jdbc等文件。这里的解决方案是更改jetty加载classes路径来解决。

具体配置:

<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<properties>
    <artifactId>AAA</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</properties>
<build>
    <!-- 配置加入jetty服务器,开发时我们一般使用jetty服务器 -->
    <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <configuration>
            <!--jetty:run指定加载classes路径-->
            <classesDirectory>target/${artifactId}-${version}/WEB-INF/classes</classesDirectory>
            <!-- 设置扫描target/classes内部文件变化时间间隔 -->
            <scanIntervalSeconds>10</scanIntervalSeconds>
            <webApp>
                <contextPath>/</contextPath>
            </webApp>
            <stopKey/>
            <stopPort/>
        </configuration>
    </plugin>
</build>

maven打包时生成 一个 artifactId-version的文件夹,里面有对应的WEB-INF/classes文件,<classesDirectory>标签指定jetty加载里面的classes下文件,里面有也有对应的配置文件,这样就可以正常本地启动了。

3.idea中的操作

install直接选择具体参数,然后点击install就可以了,多选参数时,会出现覆盖的情况。

如图

时间: 2024-10-05 04:44:50

配置开发环境测试环境线上生产环境的相关文章

线上生产环境部署Djngao+Nginx+Uwsgi

是否曾想过把django项目从windows移植到Linux上运行,Linux性能众所周知,作为Django运行的服务器再合适不过啦,今天分享一下如何在线上云机器的Linux环境运行Django项目. 客户端访问服务端的流程 1.首先客户端请求服务资源, 2.nginx作为直接对外的服务接口,接收到客户端发送过来的http请求,会解包分析. 3.如果是静态文件请求就根据nginx配置的静态文件目录,返回请求的资源,否则会根据django配置文件设置的static目录去找资源. 4.如果是动态的请

TFS线上生成环境发布历程

继前文 TFS在项目中Devops落地进程(上) TFS在项目中DevOps落地进程(下) 自从之前将开发环境使用TFS进行了自动化之后,就享受在此成果中,其他后续进度就停顿了好一段时间. 毕竟在我们这对于开发而言,做出代码交出发布包事情就结束了,而我们的TFS已经完美的将这个流程给自动化掉了. 本文将聚焦在TFS发布到线上生产环境中所做的一些工作和实践,如果只是纠结于如何使用TFS可以参考上面的2个链接. 之前的线上发布流程 说下我们大概的背景,我们的程序上线流程目前还是相对传统一些,大体是:

vue cli3配置开发环境、测试环境、生产(线上)环境

cli3创建vue项目是精简版的少了build和config这2个文件,所以配置开发环境.测试环境.生产环境的话需要自己创建env文件. 需要注意2点: 1.cli2创建项目生成的config文件里的env文件是js后缀 2.cli3创建自定义env文件的话不需要js后缀 下面开始创建配置: 一.直接在你项目的根目录创建三个文件(注意都没有后缀,直接创建新文件):.env.development (开发环境) .env.test(测试环境).env.production(生产环境) .env.d

Vue配置开发,测试,生产环境api

vue配置开发,测试,生产环境api https://segmentfault.com/a/1190000016664571       (参考一) https://blog.csdn.net/qq_16122415/article/details/80519656         (参考二) 原文地址:https://www.cnblogs.com/Antwan-Dmy/p/12196915.html

手游公司运维之利用Rundeck自动化运维工具和Shell脚本构建测试环境代码发布平台和生产环境代码发布平台

在做手游运维工作之前,我接触的代码发布都是常规的软件发布,有固定的发布周期.之前工作的那个外企有严格的发布周期,一年中的所有发布计划都是由Release Manager来控制,每次发布之前都需要做一些准备工作,如填写发布表单,上传发布需要的资源文件,联系发布过程中的相关人员,如开发和测试.最后在公司内部开发的发布平台上按照指定的时间点击鼠标对一个集群内的几台主机或全部主机进行代码发布.这个发布平台还是基于rsync服务实现的.虽然每个星期都有各种服务的发布,但是整个发布流程是可以控制的,并且发布

如何利用docker 构建golang线上部署环境

公司最近开发了一个项目是用golang 写的,现在要部署到线上环境去,又不想在服务器上装单独的golang,决定用docker 封装下,直接打到镜像里面,然后就直接在hub.docker.com上面搜了下golang的镜像,直接就docker pull golang 最新的是1.9的版本 然后参考官方的文档弄了下Dockerfile大概是这样: FROM golang MAINTAINER jackluo #指定工作目录 WORKDIR /go/src/ActivitApi COPY . . C

Java 开发必须掌握的线上问题排查命令

作为一个合格的开发人员,不仅要能写得一手还代码,还有一项很重要的技能就是排查问题.这里提到的排查问题不仅仅是在coding的过程中debug等,还包括的就是线上问题的排查.由于在生产环境中,一般没办法debug(其实有些问题,debug也白扯...),所以我们需要借助一些常用命令来查看运行时的具体情况,这些运行时信息包括但不限于运行日志.异常堆栈.堆使用情况.GC情况.JVM参数情况.线程情况等. 给一个系统定位问题的时候,知识.经验是关键,数据是依据,工具是运用知识处理数据的手段.为了便于我们

Java开发必须掌握的线上问题排查命令

作为一个合格的开发人员,不仅要能写得一手还代码,还有一项很重要的技能就是排查问题.这里提到的排查问题不仅仅是在coding的过程中debug等,还包括的就是线上问题的排查.由于在生产环境中,一般没办法debug(其实有些问题,debug也白扯...),所以我们需要借助一些常用命令来查看运行时的具体情况,这些运行时信息包括但不限于运行日志.异常堆栈.堆使用情况.GC情况.JVM参数情况.线程情况等. 给一个系统定位问题的时候,知识.经验是关键,数据是依据,工具是运用知识处理数据的手段.为了便于我们

利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境

一.环境描述 安装有ansible的服务器:192.168.13.45 测试环境服务器:192.168.13.49 /home/app/api-tomcat/webapps/api.war为测试环境新版本war包位置 生产环境服务器:192.168.13.51 /home/app/api-tomcat/webapps/api.war为生产环境war包位置     /home/app/api-tomcat/webapps/api为生产环境项目位置 /home/app/tomcat.bak/api/