Java-Maven
2022/7/23 14:23:11
本文主要是介绍Java-Maven,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Maven
一、系统配置
idea中配置meaven,需要在起始页中进行配置。如果在项目中进行配置则只对当前项目有效。
配置加速源
<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> <mirror> <id>tencent</id> <name>tencent maven mirror</name> <url>https://mirrors.tencent.com/nexus/repository/maven-public/</url> <mirrorOf>*</mirrorOf> </mirror>
配置JDK版本
默认使用jdk1.8
<profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
配置Tomcat7插件(在pom文件中)
<build> <!--设置插件--> <plugins> <!--具体的插件配置--> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>80</port> <path>/</path> </configuration> </plugin> </plugins> </build>
二、依赖管理
依赖传递
依赖具有传递性。
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
依赖传递冲突问题
- 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
- 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
- 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
可选依赖
可选依赖指对外隐藏当前所依赖的资源——即不透明
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <optional>true</optional> </dependency>
排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <exclusions> <exclusion> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> </exclusion> </exclusions> </dependency>
依赖范围
依赖的jar默认情况可以在任何地方使用,可以通过scpoe
标签设定其作用范围
作用范围:
- 主程序范围有效(main文件夹范围内)
- 测试程序范围有效(test文件夹范围内)
- 是否参与打包(package指令范围内)
scope | 主代码 | 测试代码 | 打包 | 范例 |
---|---|---|---|---|
compile(默认) | Y | Y | Y | log4j |
test | Y | junit | ||
provided | Y | Y | servlet-api | |
runtime | Y | jdbc |
三、生命周期和插件
生命周期
为了让构建过程自动化完成,Maven 设定了三个生命周期,生命周期中的每一个环节对应构建过程中的一个操作。
clean生命周期
- pre-clean:执行一些需要在clean之前完成的工作
- clean:移除所有上一次构建生成的文件
- post-clean:执行一些需要在clean之后立刻完成的工作
site生命周期
- pre-site:执行一些需要在生成站点文档之前完成的工作
- site:生成项目的站点文档
- post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
- site-deploy:将生成的站点文档部署到特定的服务器上
default生命周期
插件
插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能。一个插件可对应多个阶段。
可以通过插件自定义其他功能。
<!--在执行到generate-test-resources生命周期时,将源代码和测试代码打成源码包--> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <goals> <goal>jar</goal> <goal>test-jar</goal> </goals> <phase>generate-test-resources</phase> </execution> </executions> </plugin> </plugins> </build>
四、继承与聚合
聚合
聚合用于快速构建maven工程,一次性即可构建多个模块。
方法:创建一个空模块,打包类型定义为pom;然后定义当前模块进行构建操作时关联的其他模块名称。
<packaging>pom</packaging> <modules> <module>../ssm_controller</module> <module>../ssm_service</module> <module>../ssm_dao</module> <module>../ssm_pojo</module> </modules>
参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关。
继承
通过继承可以实现在子工程中沿用父工程中的配置。
<!--在子工程中,定义当前工程的父工程--> <parent> <groupId>fun.it</groupId> <artifactId>ssm</artifactId> <version>1.0-SNAPSHOT</version> <!--填写父工程的pom文件--> <relativePath>../ssm/pom.xml</relativePath> </parent>
继承依赖定义
在父工程中定义依赖管理
<!--声明此处进行依赖管理--> <dependencyManagement> <!--具体的依赖--> <dependencies> <!--spring环境--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.9.RELEASE</version> </dependency> <dependencies> <dependencyManagement>
继承依赖使用
在子工程中定义依赖关系,无需声明依赖版本,版本参照父工程中依赖的版本
<dependencies> <!--spring环境--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> </dependencies>
继承与聚合
继承:用于快速配置
聚合:用于快速构建项目
相同点:
- 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
- 聚合与继承均属于设计型模块,并无实际的模块内容
不同点:
- 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
- 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
五、其他配置
属性
自定义属性
自定义属性等同于定义变量,方便统一维护
<!--定义--> <properties> <spring.version>5.1.9.RELEASE</spring.version> <junit.version>4.12</junit.version> </properties> <!--调用--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency>
内置属性
<!--${basedir}获取项目的根路径--> <systemPath>${basedir}/src/main/resources/lib/kingbasejdbc4.jar</systemPath> <!--当前项目的version--> ${version}
Setting属性
使用Maven配置文件setting.xml中的标签属性,用于动态配置
${settings.localRepository}
Java系统属性
用于读取Java系统属性
$(user.home)
环境变量属性
使用Maven配置文件setting.xml中的标签属性,用于动态配置
${env.JAVA_HOME}
版本管理
工程版本
- SNAPSHOT(快照版本):临时性的版本
- RELEASE(发布版本):向外发布的比较稳定的版本
资源配置
使其可以在任意配置文件中加载pom文件中定义的属性
调用格式:${jdbc.url}
配置资源文件对应的信息:
<resources> <resource> <!— 设定配置文件对应的位置目录,支持使用属性动态设定路径 --> <directory>${project.basedir}/src/main/resources</directory> <!-- 开启对配置文件的资源加载过滤 --> <filtering>true</filtering> </resource> </resources>
多环境配置
<!--创建多环境--> <profiles> <!--定义具体的环境:生产环境--> <profile> <!--定义环境对应的唯一名称--> <id>pro_env</id> <!--定义环境中专用的属性值--> <properties> <jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url> </properties> <!--设置默认启动--> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <!--定义具体的环境:开发环境--> <profile> <id>dev_env</id> …… </profile> </profiles>
加载指定环境:
mvn install -P pro_env
跳过测试
- 使用命令跳过测试
mvn 指令 -D skipTests
执行的指令声明周期必须包含测试环节
- 使用界面操作跳过测试
- 使用配置跳过测试
<plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> <configuration> <skipTests>true</skipTests><!--设置跳过测试--> <includes> <!--包含指定的测试用例--> <include>**/User*Test.java</include> </includes> <excludes><!--排除指定的测试用例--> <exclude>**/User*TestCase.java</exclude> </excludes> </configuration> </plugin>
私服
配置本地仓库访问私服的权限(setting.xml):
<servers> <server> <id>heima-release</id> <username>admin</username> <password>admin</password> </server> <server> <id>heima-snapshots</id> <username>admin</username> <password>admin</password> </server> </servers>
配置本地仓库资源来源(setting.xml):
<mirrors> <mirror> <id>nexus-heima</id> <mirrorOf>*</mirrorOf> <url>http://localhost:8081/repository/maven-public/</url> </mirror> </mirrors>
配置当前项目访问私服上传资源的保存位置(pom.xml):
<distributionManagement> <repository> <id>heima-release</id> <url>http://localhost:8081/repository/heima-release/</url> </repository> <snapshotRepository> <id>heima-snapshots</id> <url>http://localhost:8081/repository/heima-snapshots/</url> </snapshotRepository> </distributionManagement>
发布资源到私服命令:mvn deploy
这篇关于Java-Maven的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门
- 2024-12-27JWT单点登录原理学习入门