Maven深入了解

一个优秀的构建系统必须足够灵活,应该能够让项目在不同的环境下都能成功构建。maven为了支持构建的灵活性,内置了三大特性,即:属性、profile和资源过滤

1、maven属性

maven属性分6类:
1、内置属性:如${basedir}表示项目根目录,${version}表示项目版本
2、POM属性:用户可以引用pom文件中对应的值。如:
${basedir} 项目根目录
${project.build.directory} 构建目录,缺省为target
${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
${project.packaging} 打包类型,缺省为jar
${project.xxx} 当前pom文件的任意节点的内容
3、自定义属性:用户可以在pom的<properties>元素下自定义maven属性。
4、setting属性:用户可以使用以settings开头的属性引用settings.xml中xml元素的值,如${settings.localRepository}指向用户本地仓库的地址。
5、java系统属性:maven可以使用当前java系统的属性,如${user.home}指向了用户目录。
6、环境变量属性:所有环境变量都可以使用以env.开头的属性。如:${env.JAVA_HOE}。

2、资源过滤

这里所谓的资源:也就就是指src/main/resources和src/test/resources文件下的所有文件,默认情况下,这些文件会被复制到classpath下面,即target/classes下面。
所谓资源过滤,就是过滤这些文件夹下面的文件里面的内容,看里面的maven变量是否需要替换。默认情况下,只有pom.xml里面的变量才会被替换,资源文件是不会被过滤的,但是可以设置,如下:

    <build>
        <finalName>agentmanager</finalName>
            <sourceDirectory>src/main/java</sourceDirectory>
            <resources>
                <!-- 控制资源文件的拷贝 -->
                <resource>
                    <directory>src/main/resources</directory>
                    <excludes>
                        <exclude>**/jre.zip</exclude>
                        <exclude>**/jre.tar</exclude>
                        <exclude>agentmanager.jsmooth</exclude>
                        <exclude>assembly.xml</exclude>
                    </excludes>
                    <targetPath>${project.build.directory}</targetPath>
                </resource>
                <resource>
                    <directory>src/main/resources/conf</directory>
                    <targetPath>${basedir}/conf</targetPath>
                    <filtering>true</filtering>
                </resource>
            </resources>
    </build>        

  如jdbc.properties

jdbc.driverClassName=${db.driver}
jdbc.url=${db.url}
jdbc.username=${db.user}
jdbc.password=${db.pwd}

  profile文件

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <db.driver>oracle.jdbc.driver.OracleDriver</db.driver>
            <db.url>jdbc:oracle:thin:@10.252.48.3:1521:dbname</db.url>
            <db.user>username</db.user>
            <db.pwd>userpwd</db.pwd>
        </properties>
    </profile>
    <profile>
        <id>test</id>
          <properties>
              <db.driver>oracle.jdbc.driver.OracleDriver</db.driver>
               <db.url>jdbc:oracle:thin:@10.252.48.3:1521:testdbname</db.url>
               <db.user>testusername</db.user>
               <db.pwd>testuserpwd</db.pwd>
          </properties>
     </profile>
</profiles>

  在构建时可以使用-P参数激活一个或多个profile,多个之间用逗号分隔
  如 mvn clean install -Pdev

3、maven profile

上面例子应该可以看出profile是做什么的,其实就相当于定义了一系列的profile变量,在具体构建时可用使用其中的某个profile去变量替换资源文件。
激活profile的方式有很多,如命令行激活(上面),settings文件显式激活、系统属性激活、操作系统环境激活、默认激活、文件存在与否激活等,具体可以参考官网资料

3.1 profile的种类

根据需要,可以在以下文件声明profile。
1、pom.xml 针对当前项目
2、用户 settings.xml 用户目录下的.m2/settings.xml, 对当前用户的所有项目有效。
3、全局 settings.xml 即maven安装目录下的conf/settings.xml。对本机上的所有项目有效。

4、web资源过滤

在maven的web项目里面,除了上面所说的资源文件(src/main/resources)之外,还有一类叫做web资源目录,即src/main/webapp下面的js、css等等。默认情况下,这些目录是不被资源过滤的,开启的命令如下:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
    <configuration>
        <webResources>
        <resource>
            <directory>src/main/webapp</directory>
            <filtering>true</filtering>
            <includes>
            <include>**/*.css</include>
            <include>**/*.js</include>
            </includes>
        </resource>
        </webResources>
    </configuration>
</plugin>

    参考自http://www.2cto.com/os/201407/313825.html

时间: 2024-10-13 09:43:11

Maven深入了解的相关文章

IDEA 配置maven

编写Maven的settings.xml文件内容如下 引入阿里镜像和maven在中国的中央仓库镜像 <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc

使用 IDEA 创建 Maven Web 项目 (异常)- Disconnected from the target VM, address: &#39;127.0.0.1:59770&#39;, transport: &#39;socket&#39;

运行环境: JDK 版本:1.8 Maven 版本:apache-maven-3.3.3 IDEA 版本:14 maven-jetty-plugin 配置: <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <configuration> <webAppSourceDirectory>${pro

maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理

maven依赖本地非repository中的jar包 http://www.cnblogs.com/piaolingxue/archive/2011/10/12/2208871.html 博客分类: MAVEN 今天在使用maven编译打包一个web应用的时候,碰到一个问题: 项目在开发是引入了依赖jar包,放在了WEB-INF/lib目录下,并通过buildpath中将web libariary导入. 在eclipse中开发没有问题,但是使用maven编译插件开始便宜总是报找不到WEB-INF

eclipse 创建maven web项目

前言: 前面那一篇讲解了Maven的作用以及详细的应用,不了解Maven的具体使用,请参读:http://www.cnblogs.com/hongwz/p/5456578.html,下面来说明一下IDE构建Maven项目. 1.新建Maven项目 1.1 File -> New -> Other 1.2 选择Maven Project ,单击Next 1.3 保持默认即可,单击Next 1.4 选择Archetype为 web app,单击Next 1.5 输入一些必要信息,单击Finish

解决Maven项目pom.xml文件报xxx\target\classes\META-INF\MANIFEST.MF (系统找不到指定的路径。)问题

最近自己在公司项目修改一些代码以后,出现如题的错误,后来各种Google等,最终找到了解决办法. 错误环境:Tomcat7 + Eclipse + Maven + Spring + SpringMvc + Mybatis 错误描述: 错误解决步骤: 1.找到eclipse的project菜单选择clean...选项 2.选择Clean all projects 或者 Clean projects selectd blow(选择此项必须勾选出错的项目) 3.等着progress视图里的build完

linux安装maven及配置环境变量 配图

Maven 3.5.0 maven安装和环境变量的配置 1 下载 maven 链接:http://pan.baidu.com/s/1qXXjXfe 密码:r92r 2 解压安装包 tar zvxf apache-maven-3.5.0-bin.tar.gz 3  配置maven环境变量 vi  /etc/profile   编辑系统配置文件 #set Maven environmentexport MAVEN_HOME=/usr/local/software/dir-maven/apache-m

eclipse创建maven项目

以下内容不包含maven的配置... 好,进入主题. 首先new一个项目,选择Maven Project,点击Next 选择默认即可,继续点Next 我这里创建的是web工程,所以选择webapp后点击Next 填好 groupid和artifactId后会自动填写package,填完后点击finish.关于groupid和artifactId的解释我从网上找了下,大家可以参考下   "groupid和artifactId被统称为"坐标"是为了保证项目唯一性而提出的,如果你要

MAVEN

<distributionManagement> <repository> <id>releases-repo</id> <name>Internal Releases</name> <url>http://${nexus.proxy.location}/nexus/content/repositories/releases/</url> </repository> <snapshotRepo

maven的jar包存储的位置

从Maven中心仓库下载到本地的jar包的默认存放在"${user.home}/.m2/repository"中,${user.home}表示当前登录系统的用户目录(如"C:\Users\gacl"), 点击进入repository文件夹, Jar包存放在这个位置不太好,我们希望能够自己定义下载下来的jar包的存放位置,因此我们可以自己设置下载到本地时的jar包的存放目录. 在"E:\"目录下创建一个"repository"文

Maven详解(二)------ Maven的安装配置

1.下载 Maven ①.官网下载地址:http://maven.apache.org/download.cgi ②.百度云盘:http://pan.baidu.com/s/1eS1NVYa 密码:9y3w 2.配置 Maven 环境变量 将下载的 maven 压缩包解压到电脑的某个盘符,我这里是 D:\JavaTools\apache-maven-3.3.9 ①.右键---计算机属性----高级系统设置---高级---环境变量---系统变量----新建   变量名:MAVEN_HOME 变量值