`
lp895876294
  • 浏览: 285425 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

maven常用配置信息和常量

 
阅读更多

1.   通过 <properties> 元素用户可以自定义一个或多个属性,然后在 POM 的其他地方使用 ${ 属性名称 } 的方式引用属性,这种做法的最大意义在于消除重复。

 

2.   Maven 共有六类属性:

  1) 内置属性: ${basedir} 表示项目根目录,即 pom.xml 文件的目录。 ${version} 表示项目版本。

  2) POM 属性:用户可以使用该类属性引用 POM 文件中对应元素的值:

    a)  ${project.build.sourceDirectory} :项目的主源码目录,默认为 src/main/java

    b)  ${project.build.testSourceDirectory} :项目的测试源码目录,默认为 src/test/java

    c)  ${project.build.directory} :项目构建输出目录,默认为 target/

    d)  ${project.outputDirectory} :项目主代码编译输出目录,默认为 target/classes

    e)  ${project.testOutputDirector} :项目测试代码编译输出目录,默认为 target/test-classes/

    f)   ${project.groupId} :项目的 groupId

    g)  ${project.artifactId} :项目的 artifactId

    h)  ${project.version} :项目的 version ,与 ${version} 等价

    i)   ${project.build.finalName} :项目打包输出文件的名称,默认为 ${project.artifactId}-${project.version}

它们的默认值是在超级 POM 中定义的。

  3) 自定义属性:用户可以在 POM 的 <properties> 元素下自定义 Maven 属性。

  4) Settings 属性:与 POM 属性同理,用户以 settings. 开头的属性引用 settings.xml 文件中 XML 元素的值。如${settings.localRepository} 指向本地仓库的位置

  5) Java 系统属性:所有 Java 系统属性都可以使用 Maven 属性引用。如 ${user.home} 指向用户目录。可以用 mvn help:system 查看所有 Java 系统属性 ( 包含 -D 参数设置的属性 ) 。

  6) 环境变量属性:所有环境变量都可以使用 env. 开头的 Maven 属性引用。如 {env.JAVA_HOME} 。可以用 mvn help:system 查看所有环境变量属性。

 

3.   POM 的 <build> 元素下可以使 用 <resources> 和 <testResources> 定义多个资源目录和测试资源目录。 在<resource> 和 <testResource> 下定义 <filtering> 元素来告 诉 Maven 是否要解析资源文件中的 Maven 属性,如:

<resources>  
  <resource>  
    <directory>${project.basedir}/src/main/resources</directory>  
    <filtering>true</filtering>  
  </resource>  
</resources>

4.   mvn 的 -P 参数表示在命令行激活一个 profile 。如:

    mvn clean install –Pdev

    表示激活 ID 为 dev 的 profile 。我们可以在 id 为 dev 的 profile 中定义 dev 环境下的数据库连接等配置的 Maven 属性,从而用上述命令构建一个 dev 环境下的构件。

 

5.   Maven profile 能够在构建的时候修改 POM 的一个子集,或者添加额外的配置元素。用户可以使用很多方式激活 profile,以实现构建在不同环境下的移植。

 

6.   Maven 激活 profile 的方式有 :

  1)   命令行激活:通过 mvn 命令行的 –P 参数可以激活一个或多个 profile ,多个 id 之间用逗号分隔。如: mvn clean install –Pdev-x,dev-y

  2)   settings 文件显示激活: settings.xml 文件的 activeProfiles 元素可以配置一个或多个 profile 对于所有项目都是处于激活状态,如:
<settings>  
  …  
  <activeProfiles>  
    <activeProfile>dev-x</activeProfile>  
    <activeProfile>dev-y</activeProfile>  
  </activeProfiles>  
  …  
</settings>
3)   系统属性激活:用户可以配置当某系统属性存在的时候激活 profile (不配置 <value> 属性),进而可以设置当某系统属性存在并等某值的时候激活。如 :
<profiles>  
  <profile>  
     <activation>  
      <property>  
        <name>test</name>  
        <value>x</value>  
      </property>  
    </activation>  
  </profile>  
</profiles>

4) 操 作系统环境激活:

<profiles>  
  <profile>  
    <activation>  
      <os>  
        <name>Windows XP</name>  
        <family>Windows</family>  
        <arch>x86</arch>  
         <version>5.1.2600</version>  
      </os>  
    </activation>  
  </profile>  
</profiles>

    这里 family 的值包括 Windows 、 UNIX 和 Mac 等。 name 、 arch 、 version 可以通过查看环境中的系统属性 os.name、 os.arch 和 os.version 获得。

  5) 文件存在与否激活:

<profiles>  
  <profile>  
    <activation>  
      <file>  
        <missing>x.properties</missing>  
        <exists>y.properties</exists>  
      </file>  
    </activation>  
  </profile>  
</profiles>
6) 默认激活:
<profiles>  
  <profile>  
    <activation>  
      <activeByDefault>true</activeByDefault>  
    </activation>  
  </profile>  
</profiles>

    但如果 POM 中有任何一个 profile 通过以上其他任意一种方式被激活了,所有的默认激活配置都会失效。

    激活的多个 profile 中的冲突属性如何解决?

7.   可以用 mvn help:active-profiles 查看当前项目所有被激活的 profile 。可以用 mvn help:all-profiles 查看当前项目目的所有的 profile 。

8.   profile 可以在如下位置声明:

  1)p om.xml :只对当前项目有效

  2) ~/.m2/settings.xml :对该用户所有 Maven 项目有效

  3) M2_HOME/conf/settings.xml :对本机上所有 Maven 项目有效

  4) profiles.xml :可以在项目根目录下使用一个额外的 profiles.xml 文件,只对项目有效。该文件默认不会被安装和部署。 Maven 3 已经不支持这种形式。

    在 POM 中定义的 profile 可以修改以下项目属性:
<profile>  
  <repositories/>  
  <pluginRepositories/>  
  <distributionManagement/>  
  <dependencies/>  
  <dependencyManagement/>  
  <modules/>  
  <properties/>  
  <reporting/>  
  <build>  
    <plugins/>  
    <defaultGoal/>  
    <resources/>  
    <testResources/>  
    <finalName/>  
  </build>  
</profile>

    但在其他地方定义的 profile 由于无法保证它们能随着特定的 pom.xml 一起被分发,因此只允许修改以下属性:

<profile>  
  <repositories/>  
  <pluginRepositories/>  
  <properties/>  
</profile>

9.   Web 资源文件默认位于 src/main/webapp/ 目录,打包后位于 WAR 包的根目录。开启一般资源文件的过滤(替换 Maven 属性)也不会影响到 web 资源文件。可以在 POM 中配置 maven-war-plugin 配置 web 资源目录及是否过滤:

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

10.   可以用标注将 Unit Test 和 Integration Test 进行分组,从而可以在 profile 中配置 maven-surefire-Plugin 定义执行不同的 Test :

<configuration>  
  <groups>group-name</groups>  
</configuration>  
分享到:
评论

相关推荐

    SpringMVC基本框架(maven)

    用idea14搭建的springmvc基本架构: 1.标准目录格式; 2.标准配置文件格式:数据库配置、资源配置、log4j配置、...4.增加常用过滤器配置,可根据项目要求改写; 5.增加获取资源方法实例,可以获取配置文件中的常量。

    IDEA常用配置1

    本文主要介绍IDEA的一些基础配置和常用快捷键设置。 首先,基础配置方面: 1. **字体与大小**:用户可以根据自己的习惯调整字体类型和大小,这在长时间编程时对眼睛舒适度有很大影响。同时,还可以设置行间距,以...

    黑马(linux、redis、oracle、maven、全栈基础班视频教程

    - **常用插件**:介绍Maven中常用的插件及其功能。 - **自定义插件**:学习如何编写自己的Maven插件。 ### 全栈基础班综合学习 #### 前端技术栈 - **HTML/CSS**:网页布局与样式设计。 - **JavaScript**:实现页面...

    java 网页信息采集源码

    - **conf**:配置文件夹,可能包含爬虫的配置信息,如URL列表、爬取规则、数据库连接信息等。 - **output**:可能包含了爬取过程中的中间结果或最终输出数据。 - **common**:公共模块,可能包含一些通用的工具类或...

    Java学生实训考勤管理系统源码.zip

    8. **pom.xml**:这是Maven项目对象模型的配置文件,用于管理项目的依赖关系、构建过程和插件设置。通过这个文件,我们可以了解到项目所依赖的外部库和技术栈。 9. **README.md**:通常会包含项目简介、安装指南、...

    jfinal中文文档

    首先,JFinal提供了快速上手指南,指导用户如何创建项目、添加必要的库文件、配置web.xml、添加Java文件并启动项目,以及在Maven和IDEA下的开发方式。这展示了JFinal的易用性和对开发工具的友好支持。 JFinalConfig...

    基于springboot的基于购物商城系统源码+数据库(毕业设计).zip

    5. **pom.xml**:这是Maven项目对象模型(Project Object Model)文件,定义了项目依赖、构建配置等信息,用于Maven管理项目的构建、报告和依赖关系。 6. **ms-web**:这可能是项目的前端部分,包含了用户交互界面...

    基于springboot+vue开发的电商项目(使用到LRU算法缓存商品信息,热卖商品,模糊查询搜索框,运用到沙箱支付)

    它预配置了许多常见设置,如嵌入式Tomcat服务器、数据源、日志和安全等,使得开发者可以快速构建可运行的应用。在本项目中,Spring Boot被用作后端框架,处理业务逻辑、数据存储和API接口。 2. **Vue.js**: Vue.js ...

    java基础工具类iceroot

    java基础工具类iceroot iceroot是一个java基础工具类.封装了很多有用的方法. 该类库无任何第三方依赖. 涵盖了 字符串操作 时间转化 读取配置文件 等方面.... 而很多常见的操作在很多第三方类库中并...常用的常量 执行sql

    本人在达内学习的covejava代码

    1. **Java环境搭建**:包括安装JDK(Java Development Kit),配置JAVA_HOME环境变量,以及设置PATH和CLASSPATH,这些都是开始编程前的必要步骤。 2. **基础语法**:包括数据类型(如整型、浮点型、字符型和布尔型...

    达内java课程源码

    1. **Java入门**:首先,课程可能从Java的安装和环境配置开始,讲解如何设置JDK(Java Development Kit)并配置Java开发环境,如设置PATH和JAVA_HOME变量。 2. **语法基础**:接着,会介绍Java的基本语法,包括数据...

    SSM_jar.rar

    SSM框架,全称为Spring、SpringMVC和MyBatis的整合框架,是Java Web开发中常用的一种技术栈。这个名为"SSM_jar.rar"的压缩包包含了SSM框架基础搭建所需的jar包,便于开发者快速构建基于SSM的项目环境。 首先,我们...

    JAVA解惑

    20. **Maven项目管理**:了解Maven的项目构建和依赖管理,以及常用命令。 以上只是《JAVA解惑》可能包含的部分主题,每个主题下都包含了丰富的细节和实例,旨在帮助读者不仅掌握Java语言本身,还能理解其背后的原理...

    2020年最新Java基础精品教程[视频课程].txt打包整理.zip

    - **Maven项目管理**:学习Maven的配置和使用,管理项目依赖。 9. **音视频处理** 在Java开发中,虽然音视频处理不是其核心领域,但随着多媒体应用的发展,开发者可能需要处理音视频数据。可以学习JavaFX库进行...

    很不错的java ppt

    1. **Java基础知识**:包括Java的历史背景、特点、环境配置(JDK安装与环境变量设置)以及Java开发工具(如Eclipse或IntelliJ IDEA的使用)。 2. **语法基础**:讲解Java的基本数据类型(如整型、浮点型、字符型和...

    Wiley.-.Java.in.60.Minutes.a.Day.(19.Lectures,.789.pages).rar

    16. **Maven项目管理**:介绍Maven作为构建和依赖管理工具的作用,理解POM.xml配置文件,以及常用命令如mvn clean、mvn compile和mvn package。 17. **Spring框架**:Spring是Java企业级应用开发的主流框架,讲解...

    上海交大JAVA讲义(PPT)

    14. **Maven项目管理**:Maven是Java项目管理工具,能自动化构建、依赖管理和项目信息管理,讲义可能涵盖Maven的基本使用和配置。 15. **JUnit单元测试**:JUnit是Java的单元测试框架,用于编写和运行可重复的测试...

    基于SSM框架在线考试系统设计文档

    "skbishe.commons"可能包含了通用工具类和常量;"skbishe.dao"负责数据库操作;最后,"skbishe.entity"定义了数据库表对应的实体类。 关于"onlinetest.sql",这很可能是数据库脚本文件,用于初始化考试系统的数据库...

    多模块架构,springboot

    多模块架构则是大型项目中常用的一种组织方式,它将复杂的系统拆分成多个独立的、可重用的模块,每个模块负责特定的功能,有助于代码的管理和维护。以下将详细介绍这两个知识点。 首先,Spring Boot的核心特性包括...

    java教学讲义适合java入门

    16. **Maven或Gradle**:项目管理和构建工具的使用,如何配置和管理依赖。 17. **Java编程规范**:讲解代码风格和命名规则,以提高代码可读性和维护性。 每个主题都会通过实例演示和练习题帮助学习者巩固所学知识...

Global site tag (gtag.js) - Google Analytics