zoukankan      html  css  js  c++  java
  • Maven_如何为开发和生产环境建立不同的配置文件 --我的简洁方案

    其实也是最近才看Maven, 以前都是用ant+ivy, 对于轻量级的项目来说足够了, 而且非常灵活.

    看了看Maven, 约定.... 现在编程都说约定, 约定是挺好, 问题是超出约定的事情太多了, 到头来还要依赖其他东西, 真不想用maven啊.

    以前我们开发环境和生产环境的配置文件都是单独分开目录存放的, ant脚本搞个变量就自动打包不同的文件了. 我觉得管理起来也很容易, 所以看到很多maven为解决开发/生产环境的方案真是不太理解啊:
      1. 什么 ${your.configuration}, 和spring的东西都差不多了, 配置写到脚本里去了,....这叫啥配置...
      2. 调用ant....

    还是根据我以前的思路: 

     src/main目录下原来有 java, resources, 我新建几个目录: resources-dev, resources-test, resources-prod.

    resources --- 一些共享的配置文件, 一般不需要修改的
    resources-dev --- 开发环境下用的配置文件, 和resources目录下文件没有重合.
    resources-prod --- 生产环境下用的配置文件, 和resources目录下文件没有重合.


    本机开发的时候设置源码目录为 java, resources, resources-dev, 可以直接开发调试.

    编译的时候希望maven根据不同环境, 打包不同的目录下的文件, 我们利用maven的profile和build-helper-maven-plugin插件就可以实现.

        
    <profiles>
            <profile>
                <id>dev</id>
                <build>
                    <plugins>
                        <plugin>
                            <groupId>org.codehaus.mojo</groupId>
                            <artifactId>build-helper-maven-plugin</artifactId>
                            <version>1.5</version>
                            <executions>
                                <execution>
                                    <id>add-resource</id>
                                    <phase>generate-resources</phase>
                                    <goals>
                                        <goal>add-resource</goal>
                                    </goals>
                                    <configuration>
                                        <resources>
                                            <resource>
                                                <directory>src/main/resources_dev</directory>
                                            </resource>
                                        </resources>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>
                        <plugin>
                            <artifactId>maven-war-plugin</artifactId>
                            <executions>
                                <execution>
                                    <phase>package</phase>
                                    <goals>
                                        <goal>war</goal>
                                    </goals>
                                    <configuration>
                                        <classifier>dev</classifier>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>
    
                    </plugins>
                </build>
            </profile>
            <profile>
                <id>test</id>
                <build>
                    <plugins>
                        <plugin>
                            <groupId>org.codehaus.mojo</groupId>
                            <artifactId>build-helper-maven-plugin</artifactId>
                            <version>1.5</version>
                            <executions>
                                <execution>
                                    <id>add-resource</id>
                                    <phase>generate-resources</phase>
                                    <goals>
                                        <goal>add-resource</goal>
                                    </goals>
                                    <configuration>
                                        <resources>
                                            <resource>
                                                <directory>src/main/resources_test</directory>
                                            </resource>
                                        </resources>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-war-plugin</artifactId>
                            <executions>
                                <execution>
                                    <phase>package</phase>
                                    <goals>
                                        <goal>war</goal>
                                    </goals>
                                    <configuration>
                                        <classifier>test</classifier>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </build>
            </profile>
        </profiles>


    (文章后面有简化版本)

    自己根据实际的部署环境修改吧, 运行 mvn package -P test 就可以打包了.


    反正很简单啦. 一大堆xml, 有用的没几句....太罗嗦了


    另:目前开发用resin, intellij idea 9, 调试时webapp在开发目录webapp下就地开发, 所以我的maven脚本还有如下部分:

        
    <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.1</version>
                    <configuration>
                        <warSourceExcludes>WEB-INF/lib/**,WEB-INF/classes/**,WEB-INF/work/**,WEB-INF/tmp/**</warSourceExcludes>
                        <archive>
                          <addMavenDescriptor>false</addMavenDescriptor>
                        </archive>
                    </configuration>
                </plugin>
            </plugins>
        </build>



    这部分是公用的, 当然dev时候也不用打包.... 所以........ 可以用于本机开发, 打包到test, production等环境.



    总之部署上maven不如ant灵活, ant写一套脚本一般来说也很少修改了.... 想改特容易. maven想复制个目录都要想法....


    ______________________________________________
    简化后的版本: 

        
    <properties>
           <package.target>notexists</package.target>
        </properties>
        
        <profiles>
            <profile>
                <id>dev</id>
                <properties>
                     <package.target>dev</package.target>
                </properties>
            </profile>
            <profile>
                <id>test</id>
                <properties>
                     <package.target>test</package.target>
                </properties>
            </profile>
        </profiles>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.5</version>
                    <executions>
                        <execution>
                            <id>add-resource</id>
                            <phase>generate-resources</phase>
                            <goals>
                                <goal>add-resource</goal>
                            </goals>
                            <configuration>
                                <resources>
                                    <resource>
                                        <directory>src/main/resources_${package.target}</directory>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.1</version>
                    <configuration>
                        <warSourceExcludes>WEB-INF/lib/**,WEB-INF/classes/**,WEB-INF/work/**,WEB-INF/tmp/**</warSourceExcludes>
                        <archive>
                          <addMavenDescriptor>false</addMavenDescriptor>
                        </archive>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>war</goal>
                            </goals>
                            <configuration>
                                <classifier>${package.target}</classifier>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
     
     
     
     
    转:http://www.blogjava.net/scud/archive/2010/10/27/336326.html
  • 相关阅读:
    第八天-2019-12-3环境变量-自动挂载-别名
    Raid
    图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID100
    第七天-2019-12-2改网卡,dns,挂载
    第六天2019-11-29vi命令使用技巧与架构目录
    linux目录架构
    第五天-2019-11-28基本配置命令
    第四天--2019-11-27网络信息配置
    ue4 Widget to RenderTarget
    UE4 ProcessEvent multiple parameters
  • 原文地址:https://www.cnblogs.com/gisblogs/p/5151640.html
Copyright © 2011-2022 走看看