`

Maven内置隐式变量

 
阅读更多

引自:http://blog.csdn.net/xh16319/article/details/22981051

 

Maven提供了三个隐式的变量可以用来访问环境变量,POM信息,和Maven Settings。

 

env

 

env变量,暴露了你操作系统或者shell的环境变量。便 如在Maven POM中一个对${env.PATH}的引用将会被${PATH}环境变量替换,在Windows中为%PATH%.

通过mvn help:system可以查看所有的系统属性和环境变量。

 

project

 

project变量暴露了POM。可以使用点标记(.)的路径来引用POM元素的值。例如超级POM中的一段如下:

 

<build>
    <directory>${project.basedir}/target</directory>
    <outputDirectory>${project.build.directory}/classes</outputDirectory>
    <finalName>${project.artifactId}-${project.version}</finalName>
    <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
    <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
    <scriptSourceDirectory>${project.basedir}/src/main/scripts</scriptSourceDirectory>
    <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
    <resources>
      <resource>
        <directory>${project.basedir}/src/main/resources</directory>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>${project.basedir}/src/test/resources</directory>
      </testResource>
    </testResources>
   ...
</build>

 除了${project.basedir}隐式定义为项目根目录外,project可以引用pom.xml中的任意元素的值。比如

${project.build.directory}引用的是build元素下的directory子元素的内容。

 

超级POM中约定了项目的结构目录,这些变量将被所有自定义pom继承,在你的项目下使用mvn help:effective-pom,可以看到这些值都被继承了。

 

我们也可以在pom中直接引用这些值:

${project.basedir} 项目根目录

${project.build.directory} 构建目录,缺省为target

${project.build.outputDirectory} 主代码输出目录,缺省为target/classes

${project.build.sourceDirectory} 源代码目录,缺少为src/main/java

${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}

 

 

settings

 

settings变量暴露了Maven settings信息。可以使用点标记(.)的路径来引用settings.xml文件中元素的值。例如${settings.offline}会引用~/.m2/settings.xml文件中offline元素的值

  • 大小: 51.9 KB
  • 大小: 101.3 KB
  • 大小: 65.2 KB
  • 大小: 52.2 KB
  • 大小: 93.8 KB
  • 大小: 65.3 KB
  • 大小: 74.1 KB
  • 大小: 10.8 KB
分享到:
评论

相关推荐

    selenium-Java-2.53.1

    1. **安装与配置**: 使用Selenium-Java-2.53.1之前,需要先安装JDK并配置好环境变量。然后下载Selenium Java Client库,将其添加到项目构建路径中,例如Maven或Gradle的依赖库。 2. **WebDriver**: Selenium的核心...

    The-different-between-java-and-cSharp.zip_between

    - **类型系统**:Java是强类型语言,变量必须先声明类型再使用;C#同样如此,但C#引入了“var”关键字,允许隐式类型推断。 - **命名规则**:两者都遵循驼峰命名法,但Java强制方法名首字母小写,而C#允许整个方法...

    java-repository

    1. **基础语法**:Java是一种静态类型的面向对象编程语言,它的基础语法包括变量声明、数据类型、运算符、控制流(如if语句、for循环和while循环)、方法定义等。 2. **类与对象**:面向对象编程是Java的核心,理解...

    JavaPrograms:Java程序学习

    14. **Maven项目管理工具**:Maven是Java项目构建和依赖管理的工具,通过配置XML文件来管理项目构建、报告和依赖关系。 15. **JUnit测试**:JUnit是Java的一个单元测试框架,帮助开发者编写和运行可重复的测试用例...

    Java_Praxis:Java代码实践

    14. **Maven/Gradle**: Maven和Gradle是Java项目构建工具,管理项目的依赖关系,自动化构建过程,提高开发效率。 以上就是Java编程中的一些核心知识点,"Java_Praxis:Java代码实践"很可能包含了这些主题的示例代码...

    java-playground

    11. **Maven或Gradle构建**:如果项目使用了Maven或Gradle作为构建工具,那么你将了解到如何管理依赖和构建工件。 12. **Javadoc**:高质量的代码通常会配有Javadoc注释,用于解释类、方法和其他API元素的功能和...

    ex1

    7. **多线程**:Java内置了对多线程的支持,可以创建Thread类的实例或者实现Runnable接口来开启新线程,进行并发执行。 8. **接口**:接口定义了一组方法签名,类可以实现接口以强制实现这些方法。接口在Java中常...

    JavaMag

    1. **基础语法**:包括变量、数据类型(如基本类型和引用类型)、运算符、控制流(如if语句、for循环、while循环)、异常处理等。 2. **类与对象**:这是面向对象编程的基础,涉及到类的定义、对象的创建、封装、...

    ZSE_praktyki

    1. **基础语法**:包括变量声明、数据类型、运算符、流程控制(如if语句、for循环和while循环)以及方法定义。这些都是构建任何程序的基础。 2. **类与对象**:Java是一种面向对象的语言,理解类的定义、对象的创建...

    ITC-7片段

    它包括变量、数据类型(如int、float、boolean等)、控制结构(如if语句、for循环、while循环)、类和对象、继承、封装和多态等概念。 3. **类和对象**:在Java中,一切皆为对象。类是创建对象的模板,包含数据...

    Pb2eva0320202CMartinezLaura34148438

    1. **基础语法**:Java是一种面向对象的语言,它的基础包括变量、数据类型、运算符、控制流(如if语句、for循环、while循环)、方法定义和调用等。 2. **类与对象**:Java的核心是面向对象编程,类是对象的模板,...

Global site tag (gtag.js) - Google Analytics