zoukankan      html  css  js  c++  java
  • Maven根据不同个环境打包, 获取不同的配置文件等等

    http://www.cnblogs.com/tartis/p/5391079.html

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>book</groupId>
        <artifactId>book</artifactId>
        <packaging>war</packaging>
        <version>1.0</version>
        <name>book</name>
    
        <repositories>
            <repository>
                <id>eap</id>
                <url>http://maven.repository.redhat.com/techpreview/all</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
    
        <pluginRepositories>
            <pluginRepository>
                <id>eap</id>
                <url>http://maven.repository.redhat.com/techpreview/all</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.6</maven.compiler.source>
            <maven.compiler.target>1.6</maven.compiler.target>
    
            <package.environment>local</package.environment>
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>9.2-1003-jdbc4</version>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.25</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>3.2.0.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>3.2.0.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>3.2.0.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>3.2.0.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>3.2.0.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>3.2.0.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>3.2.0.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>3.2.0.RELEASE</version>
            </dependency>
    
    
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.2</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
    
        </dependencies>
    
    
        <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>
        </profiles>
    
        <build>
            <finalName>book</finalName>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                    <excludes>
                        <exclude>local/*</exclude>
                        <exclude>product/*</exclude>
                        <exclude>public/*</exclude>
                    </excludes>
                </resource>
            </resources>
    
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.1.1</version>
                    <configuration>
                        <archive>
                            <addMavenDescriptor>false</addMavenDescriptor>
                        </archive>
                        <warName>book</warName>
                        <webResources>
                            <resource>
                                <directory>src/main/resources/${package.environment}</directory>
                                <targetPath>WEB-INF/classes</targetPath>
                                <filtering>true</filtering>
                            </resource>
                            <resource>
                                <directory>src/main/resources/public</directory>
                                <targetPath>WEB-INF/classes</targetPath>
                                <filtering>true</filtering>
                            </resource>
                            <!--<resource>-->
                                <!--<directory>${project.build.directory}/classes</directory>-->
                                <!--<includes>-->
                                    <!--<include>**/*.properties</include>-->
                                    <!--<include>**/*.xml</include>-->
                                <!--</includes>-->
                            <!--</resource>-->
                        </webResources>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>

    关键代码:

    <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>
        </profiles>
    

          这里就是不同的resources文件夹, 我这里只区分本地 产品; 设置为true的就是默认被激活的. 所以后面打包默认就是本地;

    <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                    <excludes>
                        <exclude>local/*</exclude>
                        <exclude>product/*</exclude>
                        <exclude>public/*</exclude>
                    </excludes>
                </resource>
            </resources>
    

      这里就是我的资源文件, public里面存放我的公用的, 比如Spring的配置文件, 就是本地与产品都一样的;local 与 product一看就知道了; 

    <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.1.1</version>
                    <configuration>
                        <archive>
                            <addMavenDescriptor>false</addMavenDescriptor>
                        </archive>
                        <warName>book</warName>
                        <webResources>
                            <resource>
                                <directory>src/main/resources/${package.environment}</directory>
                                <targetPath>WEB-INF/classes</targetPath>
                                <filtering>true</filtering>
                            </resource>
                            <resource>
                                <directory>src/main/resources/public</directory>
                                <targetPath>WEB-INF/classes</targetPath>
                                <filtering>true</filtering>
                            </resource>
                            <!--<resource>-->
                                <!--<directory>${project.build.directory}/classes</directory>-->
                                <!--<includes>-->
                                    <!--<include>**/*.properties</include>-->
                                    <!--<include>**/*.xml</include>-->
                                <!--</includes>-->
                            <!--</resource>-->
                        </webResources>
                    </configuration>
                </plugin>
    

      这里就是war的插件了, 

    ${package.environment}

    就是动态指定文件夹了.

    <filtering>true</filtering>

    这里一定需要设置为true才行.

    然后就差不多了. 最后执行 mvn clean ; mvn compile; mvn package; 这里是Maven的生命周期, 其他介绍的文章太多了, 我就不再具体讲. 如果说我要打product的war包; 

    mvn clean ; mvn compile; mvn -Pproduct package

    那就激活了product 的资源文件;

    就这样子, 很简单吧~

  • 相关阅读:
    triplet loss 在深度学习中主要应用在什么地方?有什么明显的优势?
    一个评测指标就是MAP(Mean Average Precision)平均精度均值。
    机器学习术语中英对照表
    logistic softmax
    mysql导出导入sql文件方法(linux)
    mysql分区表
    matplotlib安装错误依赖问题解决
    linux命令集合
    linux下安装或升级GCC4.8.2,以支持C++11标准[转]
    linux 如何显示一个文件的某几行(中间几行)
  • 原文地址:https://www.cnblogs.com/jifeng/p/5876489.html
Copyright © 2011-2022 走看看