Apeache Maven是一种纯Java编写的、开源的、跨平台的、标准化的、基于项目对象模型。
跨平台:跨os平台、跨IDE(集成开发环境)平台。例如:在Eclipse上写的项目如果要导入到idea中,比较麻烦,而直接使用maven项目,十分顺利。
标准化:项目构建标准化、项目结构标准化。
用户画像:更多的属性组成用户画像。比如:你在一个平台上使用的时间越长,这个平台就会根据大数据更加了解你。
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
这个仓库不行
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<localRepository>/media/nianshao/59D5FCE97201B8A75/java/repository</localRepository>
一个项目中的包的名称一般可以分为四到五级:
组合命令:
常用maven打包命令
mvn clean package -Dmaven.test.skip=true
-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。
-Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。
一个项目的构建过程需要经历被编译、被测试、被打包、被发布等生命阶段。这些项目生命阶段的构建是由谁完成的呢?是由Maven生命周期的各个阶段完成的。
Maven只所以非常强大的一个重要的原因是,它拥有十分完善的生命周期模型(Lifecycle)。Maven的生命周期是对所有项目的构建过程进行的抽象和统一,包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。所以,Maven的生命周期是用于管理项目生命周期的。
Maven有三套相互独立的生命周期,分别是Clean、Default和Site,分别用于完成三类完全不同的任务。每个生命周期又包含多个生命阶段(Phase),这些生命阶段是有时间先后顺序的。即后面的阶段的执行,必定是执行过了前面的阶段。
Default生命周期是Maven最重要的生命周期,用于构建项目,其中定义了构建项目时所需要执行的所有阶段。下面列出了比较重要和常用的阶段。
Default生命周期是Maven最重要的生命周期,用于构建项目,其中定义了构建项目时所需要执行的所有阶段。下面列出了比较重要和常用的阶段。
Default生命周期是Maven最重要的生命周期,用于构建项目,其中定义了构建项目时所需要执行的所有阶段。下面列出了比较重要和常用的阶段。
validate
generate-sources
process-sources
generate-resources
process-resources 复制并处理资源文件,至目标目录,准备打包
compile 编译项目的源代码
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources 复制并处理资源文件,至目标测试目录
test-compile 编译测试源代码
process-test-classes
test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署
prepare-package
package 将编译好的代码打包成为可发布的格式,如 JAR,WAR
pre-integration-test
integration-test
post-integration-test
verify
install 将包安装至本地仓库,以让其它项目依赖
deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享
Clean生命周期用于清除之前指令执行结果 。其包含三个生命阶段。
pre-clean 执行一些需要在clean之前完成的工作
clean 移除所有上一次构建生成的文件
post-clean 执行一些需要在clean之后立刻完成的工作
Site生命周期用于建立和发布项目站点。其包含四个生命阶段。
pre-site 执行一些需要在生成站点文档之前完成的工作
site 生成项目的站点文档
post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy 将生成的站点文档部署到特定的服务器上
https://www.jianshu.com/p/4b4a2af013de
mvn versions:set -DnewVersion=1.1.0
mvn versions:revert
mvn versions:commit
对于 网上找不到 jar包的坐标的,有两种方法。
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>${oauth.version}</version>
<systemPath>${project.basedir}/lib/xxxx-2.0-SNAPSHOT.jar</systemPath>
</dependency>
<profiles>
<!-- 测试环境 -->
<profile>
<id>test</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<profileActive>test</profileActive>
</properties>
</profile>
<!--开发环境-->
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profileActive>dev</profileActive>
</properties>
</profile>
<!-- 生产环境 -->
<profile>
<id>prod</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<profileActive>prod</profileActive>
</properties>
</profile>
</profiles>
默认dev环境
<properties>
<!--配置打包后的时间格式化-->
<maven.build.timestamp.format>yyyyMMddHHmm</maven.build.timestamp.format>
<!--配置时间的时区-->
<maven.build.timestamp.timezone>GMT+8</maven.build.timestamp.timezone>
</properties>
<finalName>yourapplicationname-${profileActive}-${maven.build.timestamp}</finalName>
打包后的效果:xxxx-prod-202304171311.jar
profileActive 是在多环境中配置的,要先配置下。