文档章节

maven根据不同环境 不同配置打包

努力学的程序员
 努力学的程序员
发布于 2016/04/28 17:39
字数 818
阅读 4501
收藏 8

    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就可以了,多选参数时,会出现覆盖的情况。

    如图

© 著作权归作者所有

努力学的程序员
粉丝 5
博文 16
码字总数 4941
作品 0
杭州
程序员
私信 提问
加载中

评论(1)

开源中国RIO
开源中国RIO
什么字体?
Maven多环境配置方法

开发环境、测试环境、生产环境…… 在开发中,我们需要面对各种各样的环境,并且,各个环境的参数和配置各不相同,比如数据库连接,服务器配置等。为了解决这个问题,Maven提供了多种方案,我...

木易火山
2017/09/11
21
0
使用 Maven Profile 和 Filtering 打各种环境的包

先转载记录一下,等有空了再来仔细看一下 每个项目都会有多套运行环境(开发,测试,正式等等),不同的环境配置也不尽相同(如jdbc.url),借助Jenkins和自动部署提供的便利,我们可以把不同...

stephen_wu
2016/08/24
59
0
Maven利用Profile构建不同环境的部署包

背景介绍,问题所在 一个项目里总会有很多配置文件,有配置文件是好事,说明项目灵活,但是有的配置文件需要区分不同的环境,即不同的环境,配置文件里的值会有区别,我们需要根据环境的变化...

qq_32392903
2018/05/16
0
0
Maven profile整合Spring profile

在Maven的pom.xml和Spring框架中,都有profile这个概念。profile是用于区分各种环境的,例如开发环境、测试环境、正式环境等。Maven的profile经常用于在打包时根据指定环境打入不同的配置文件...

逝去的回忆
2016/10/08
283
0
springboot maven profiles 打包不通环境

springboot maven profiles 打包不通环境 在Spring Boot项目下的application.yml或application.properties中添加配置项 application.yml application.properties 表示默认加载的就是开发环境...

独钓渔
05/10
31
0

没有更多内容

加载失败,请刷新页面

加载更多

还为PDF转Word抓狂?以下神器让你在职场倍受欢迎!

身在职场的你,是否一直在琢磨:如何能让自己在公司更受欢迎?如何才能在办公室里混个好人缘?如何在同事圈里留个好印象?其实,想要让自己成为受欢迎的人,只要让自己成为大家需要的人不就行...

foxit2world
33分钟前
7
0
AndServer+Service打造Android服务器实现so文件调用

so 文件调用 随着 Android 移动安全的高速发展,不管是为了执行效率还是程序的安全性等,关键代码下沉 native 层已成为基本操作。 native 层的开发就是通指的 JNI/NDK 开发,通过 JNI 可以实...

夜幕NightTeam
34分钟前
5
0
Docker下kafka学习三部曲之二:本地环境搭建

在上一章《 Docker下kafka学习,三部曲之一:极速体验kafka》中我们快速体验了kafka的消息分发和订阅功能,但是对环境搭建的印象仅仅是执行了几个命令和脚本,本章我们通过实战来学习如何编写...

程序员欣宸
35分钟前
4
0
萌新推荐!不再为Excel转换PDF发愁,Aspose.Cells for .NET一步到位!

Aspose.Cells for .NET(点击下载)是Excel电子表格编程API,可加快电子表格管理和处理任务,支持构建具有生成,修改,转换,呈现和打印电子表格功能的跨平台应用程序。 将Excel工作簿转换为...

mnrssj
35分钟前
6
0
对于绘画小白怎么画制服?该注意什么?

怎样制作学生服装?想必绘画初学者们常常会想的问题吧,不知道怎样才能画好人物的衣服,别着急,今日就在这儿讲一些关于如何绘画学生衣服校服的教程给我们!期望能够帮到你们! 轻便西装是不...

热爱画画的我
41分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部