项目基于spring框架开发时需要引入大量的spring模块,例如core、beans、context、jdbc等,在引入上述模块时所用的都是同一个版本的模块,此时我们会定义一个maven属性来处理这种应用场景。但maven的属性还有更多应用场景。
Maven属性分类内置属性、pom属性、自定义属性、Settings属性、Java系统属性、环境变量属性
内置属性
内置属性主要就两个,一个是basedir表示项目的根目录,另一个是version表示项目版本
POM属性
用户可以使用该类属性引用pom文件中对应的元素的值,比如project.version就是取pom文件中标签下的值。
常用的pom属性包括:
属性名称
说明
project.build.sourceDirectory
项目的源码目录
project.build.testSourceDirectory
项目的测试源码目录
project.build.directory
项目构建输出目录,默认为 target
project.outputDirectory
项目主代码编译输出的目录,默认为 target/classes
project.testOutputDirectory
项目测试代码编译输出的目录,默认为 target/test-class
自定义属性
通过标签定义的属性
2.0 2021.12.29 UTF-8 UTF-8 1.8 2.3.2.RELEASE Hoxton.SR9 2.2.6.RELEASE 2.0.1.Final 6.2.0.Final 0.9.1 3.4.3.1 1.2.78 5.7.7 1.10 2.2.0 4.5.13
Settings属性
用户以settings开头的属性引用settings.xml配置文件中xml元素的值。如settings.localRepository指向用户本地仓库的地址
Java系统属性
所有的Java系统属性都可以使用Maven属性引用。如user.home指向用户目录,可以使用mvn help:system查看所有的Java系统属性
环境变量属性
环境变量属性引用使用env开头。例如env.JAVA_HOME表示JAVA_HOME环境变量的值。
和Java系统属性一样,也可以通过mvn help:system查看
Maven Profile使用我们在项目中定义的Pom实际都继承自pom根文件
根文件存放位置:
解压 apache-maven-3.8.1/lib/maven-model-builder-3.8.1.jar
maven-model-builder-3.8.1/org/apache/maven/model/pom-4.0.0.xml
4.0.0 central Central Repository https://repo.maven.apache.org/maven2 default false central Central Repository https://repo.maven.apache.org/maven2 default false never ${project.basedir}/target ${project.build.directory}/classes ${project.artifactId}-${project.version} ${project.build.directory}/test-classes ${project.basedir}/src/main/java ${project.basedir}/src/main/scripts ${project.basedir}/src/test/java ${project.basedir}/src/main/resources ${project.basedir}/src/test/resources maven-antrun-plugin 1.3 maven-assembly-plugin 2.2-beta-5 maven-dependency-plugin 2.8 maven-release-plugin 2.5.3 ${project.build.directory}/site release-profile performRelease true true maven-source-pluginattach-sources jar-no-fork true maven-javadoc-pluginattach-javadocs jar true maven-deploy-plugintrue
profile使用场景
多环境支持(开发、测试、预生产、生产)
profile使用方法
- 定义一个配置文件,应用profile中定义的属性
driver=${driver} url=${url} user=${user} password=${password}
profile中定义的属性properties名要与 *.properties 中定义的一致
dev falsecom.mysql.jdbc.Driver jdbc:mysql://localhost:3306/dev root 123456
- 定义profile,并激活指定的profile
false
- 开启资源过滤
${basedir}/src/main/resources true
- 编译测试
- 查看编译后的资源文件
profile的激活方式
命令行方式激活
mvn install -Pdev,test
dev
test 123
Windows 10
aaa.properties
true
profile的种类
- pom.xml
- 用户settings.xml全局settings.xml
profile使用完整示例
场景描述:例如我们有两套环境的数据库配置(dev、prod),里面的连接串账户不一样,那么我们需要建立多个配置文件进行区分,假如我们使用了profile仅需建立一个配置文件即可
db.properties
driver=${driver} url=${url} user=${user} password=${password}
pom.xml
4.0.0 com.little LearnMavenMaster1.0.0 jar 8 8 junit junit4.12 test dev falsecom.mysql.jdbc.Driver jdbc:mysql://localhost:3306/dev root 123456 prod truecom.mysql.jdbc.Driver jdbc:mysql://localhost:3306/prod root root ${basedir}/src/main/resources true org.apache.maven.plugins maven-compiler-plugin2.0.2 1.8 UTF-8 org.apache.maven.plugins maven-surefire-plugin2.18.1 true
测试代码
Properties properties = new Properties(); properties.load(HelloWorld.class.getClassLoader().getResourceAsStream("db.properties")); for (Map.Entry
查看编译后的文件
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)