灵活的构建maven项目

一、自定义maven属性
可以在properties属性中自定义一个或者多个maven属性,然后在其他地方通过${属性名}的方式引用该属性。这样可以最大意义上消除重复,特别是版本号,比如spring的版本好大多数地方都是一致的。还有如果父项目可以通过定义好依赖版本号,可以保证多个子项目版本一致。

<properties>
    <springframework.version>2.5.6</springframework.version>
  </properties>

  <dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${springframework.version}</version>
    </dependency>
  </dependencies>

maven还有其他可以直接引用的属性:
1、内置属性
${basedir}:表示项目的根目录,即包含pom.xml文件的目录。
${version}:表示项目的版本号。
2、POM属性
${project.build.sourceDirectory}:项目的主源码目录,默认是src/main/java;
${project.build.testSourceDirectory}:项目的测试源码目录,默认是src/main/test;
${project.build.directory}:项目构建输出的目录,默认为target/;
${project.outputDirectory}:项目主代码编译输出目录,默认为target/class;
${project.testOutputDirctory}:项目测试代码编译输出目录,默认为target/test-classes/;
${project.groupId}:项目的groupId;
${project.artifactId}:项目的artifactId;
${project.version}:项目的version,等价于${version};
${project.build.finalName}:项目打包输出文件的名称,默认为 project.artifactId {project.version}。
3、settings属性
${settings.localRepository}:指向用户本地仓库的地址。
4、java系统属性
${user.home}:指向了用户的目录。
5、环境变量属性
所有的环境变量都可以使用env. 开头的maven属性的引用。

二、多环境构建maven项目
maven提供了一个profile属性,用来使用环境资源。
代码如下:

  <profiles>
    <profile>
        <id>dev</id>
        <properties>
            <source.env>dev</source.env>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <source.env>prod</source.env>
        </properties>
    </profile>
  </profiles>

项目结构如下:
这里写图片描述

使用build进行资源过滤,并根据不同的环境获取不同的资源文件:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <!-- 先去除掉所有的资源文件 -->
            <excludes>  
                <exclude>dev/*</exclude>  
                <exclude>prod/*</exclude>  
            </excludes> 
        </resource>
        <resource>
            <!-- 根据${source.env}获取到对应的资源位置 -->
            <directory>src/main/resources/${source.env}</directory>
        </resource>
    </resources>
  </build>

运行mvn clean package -Pdev生成dev环境的包,运行mvn clean package -Pprod生成prod环境的包。
由于默认的profile是dev,所以如果我们不指定profile,那么加载就是开发环境dev下的配置文件了。即我们在本地开发测试时,不用关心profile的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值