zoukankan      html  css  js  c++  java
  • 深入理解maven与应用(二):灵活的构建

    深入理解maven及应用(一):生命周期和插件

    參考官方url:http://maven.apache.org/guides/index.html

     一个优秀的构建系统必须足够灵活,应该可以让项目在不同的环境下都能成功构建。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>


  • 相关阅读:
    #maven解决乱码问题
    #jquery隐藏和启用
    date类型时间比较大小
    xml<>编译
    Linux分区有损坏修复
    linux部署相关命令
    Java实现4位数吸血鬼数字算法
    Java冒泡算法及中位数算法
    DT梦工厂 第25课 Scala中curring实战详解
    DT梦工厂 第24讲 scala中sam转换实战详解
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3896366.html
Copyright © 2011-2022 走看看