【Maven项目】在项目开发中对于NAPSHOT、Maven依赖关系管理以及三个标准生命周期

简介: 【Maven项目】在项目开发中对于NAPSHOT、Maven依赖关系管理以及三个标准生命周期

NAPSHOT

大型软件应用程序通常包含多个模块,常见的场景是多个团队开发同一应用程序的不同模块。例如,假设一个团队开发应用程序的前端,项目是app-ui(app-ui.jar:1.0),而另一个团队则开发应用程序后端,项目是数据服务(data-service.jar:1.0)。
现在可能发生的情况是,开发数据服务的团队正在进行快速的bug修复或项目改进,他们几乎每隔一天就会将库发布到远程仓库。现在,如果数据服务团队每隔一天上传一个新版本,就会出现以下问题:

 <modelVersion>4.0.0</modelVersion>
   <groupId>app-ui</groupId>
   <artifactId>app-ui</artifactId>
   <version>1.0</version>
   <packaging>jar</packaging>
   <name>health</name>
   <url>http://maven.apache.org</url>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
   <dependencies>
      <dependency>
      <groupId>data-service</groupId>
         <artifactId>data-service</artifactId>
         <version>1.0-SNAPSHOT</version>
         <scope>test</scope>
      </dependency>
  </dependencies>

数据服务团队应在每次发布更新代码时通知应用程序ui团队。
app ui团队需要定期将pom.xml文件更新到最新版本。
为了解决这个问题,快照的概念非常有用。
什么是快照?
快照是指定当前开发进度副本的特殊版本。与常规版本不同,Maven每次构建时都会检查远程存储库中的新快照。现在,数据服务团队每次都会将更新的代码快照发布到仓库,例如,dataservice:1.0-snapshot,以替换旧的快照jar包。
项目快照与版本

C:\MVN\app-ui>mvn clean package -U

对于该版本,如果Maven以前下载过指定的版本文件,例如data-service:1.0,Maven将不再从仓库下载新的1.0文件。要下载更新的代码,数据服务版本需要升级到1.1。
在快照的情况下,每次应用ui团队构建项目时,Maven都会自动获取最新的快照(数据服务:1.0-snapshot)。

Maven依赖关系管理

Maven的一个核心特性是依赖关系管理。当我们处理多模块项目(包括数百或数千个模块或子项目)时,模块之间的依赖关系变得非常复杂,管理变得困难。对于这种情况,Maven提供了一种高度控制方法。
传递相关性发现
例如,一个非常常见的情况是,A依赖于其他库B。如果另一个项目C想要使用A,那么项目C也需要使用库B。
Maven可以避免搜索所有必需的库。Maven通过读取项目文件(pom.xml)来查找项目之间的依赖关系。

<project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <parent>
         <artifactId>Root</artifactId>
         <groupId>com.companyname.groupname</groupId>
         <version>1.0</version>
      </parent>
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.companyname.groupname</groupId>
      <artifactId>App-Data-lib</artifactId>
      <version>1.0</version>   
      <packaging>jar</packaging>
</project>

我们需要做的就是在每个项目的pom中定义直接依赖关系。Maven将在其他方面帮助我们。
所有包含的库的图形将通过传递性依赖关系快速增长。当存在重复的数据库时,可能的情况将继续增加。Maven提供了一些函数来控制传递依赖的程度。

定义阶段

插件是使用plugins元素在pom.xml中定义的。
每个插件可以有多个目标。
可以定义阶段,插件将使用其阶段元素开始处理。我们使用了清洁阶段。
可以通过绑定到插件的目标来配置要执行的任务。我们已经将echo任务绑定到maven antrun插件的运行目标。
就这样。Maven将处理剩下的问题。它将下载本地存储库中不可用的插件并开始处理。

<plugins>
   <plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-antrun-plugin</artifactId>
   <version>1.1</version>
   <executions>
      <execution>
         <id>id.clean</id>
         <phase>clean</phase>
         <goals>
            <goal>run</goal>
         </goals>
         <configuration>
            <tasks>
               <echo>clean phase</echo>
            </tasks>
         </configuration>
      </execution>     
   </executions>
   </plugin>
</plugins>

我们在示例中广泛使用了maven antrun插件来将数据输出到控制台。请查看Maven-BuildProfile部分。让我们更好地理解这一部分,并在C:MVN项目目录中创建一个pom.xml文件。

<code>mvn compiler:compile</code>

安装Maven后,不会创建Maven的本地存储库。它是在第一次执行Maven命令时创建的。
在运行Maven时,Maven所需的任何组件都直接从本地仓库获得。如果本地仓库没有,它将首先尝试将组件从远程仓库下载到本地仓库,然后使用本地仓库中的组件。
默认情况下,无论是Linux还是Windows,每个用户都有一个名为的仓库目录。m2/repository/位于自己的用户目录下。
Maven本地仓库由default_ HOME%目录在%USER中创建。要修改默认位置,请在%M2_另一个路径在HOME%conf目录中Maven的settings.xml文件中定义。

三个标准生命周期

Maven有以下三个标准生命周期:
清洁:项目清洁
默认(或生成):处理项目部署
站点:处理项目站点文档创建
每个生命周期包含一系列阶段。这些阶段相当于Maven提供的统一接口,这些阶段的实现由Maven插件完成。
当我们输入mvn命令(如mvn clean)时,clean对应于clean生命周期中的clean阶段。然而,clean的具体操作由maven clean插件实现。
因此,Maven生命周期每个阶段的具体实现是由Maven插件实现的。
Maven实际上是一个依赖插件执行的框架,每个任务实际上都是由插件完成的。Maven插件通常用于:
创建jar文件
创建战争文件
编译代码文件
代码单元测试
创建项目文档
创建项目报告
插件通常提供目标集合,可以使用以下语法执行:

      <dependencies>
         <dependency>
            <groupId>com.companyname.groupname2</groupId>
            <artifactId>Lib2</artifactId>
            <version>2.1</version>
         </dependency>
      </dependencies>  
      <dependencies>
         <dependency>
            <groupId>com.companyname.groupname3</groupId>
            <artifactId>Lib3</artifactId>
            <version>1.1</version>
         </dependency>
      </dependencies> 

插件是使用plugins元素在pom.xml中定义的。
每个插件可以有多个目标。
可以定义阶段,插件将使用其阶段元素开始处理。我们使用了清洁阶段。
可以通过绑定到插件的目标来配置要执行的任务。我们已经将echo任务绑定到maven antrun插件的运行目标。
就这样。Maven将处理剩下的问题。它将下载本地存储库中不可用的插件并开始处理。

相关文章
|
1天前
|
XML Java 测试技术
Maven 构建 & 项目测试
本文介绍了如何使用Maven构建和测试Java应用。在`C:/MVN/consumerBanking`项目中,`pom.xml`配置了JUnit作为测试框架。执行`mvn clean package`命令进行构建,Maven会清理目标目录,编译源码和测试代码,运行测试用例,最后生成`consumerBanking-1.0-SNAPSHOT.jar`。测试报告位于`surefire-reports`文件夹。添加新Java类`Util.java`到项目后,更新`App.java`以使用`Util`类。
|
2天前
|
Java Apache Maven
Maven 项目文档
在 `C:/MVN` 目录下创建 Maven 项目 `consumerBanking` 使用命令:`mvn archetype:generate -DgroupId=com.companyname.bank -DartifactId=consumerBanking -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false`。为解决 `mvn site` 命令执行时的 `NoClassDefFoundError`
|
4天前
|
Java 项目管理 Maven
【揭秘】Maven聚合与继承:如何轻松实现项目依赖管理?
Maven的聚合和继承是Java开发中重要的概念。聚合允许将多个项目组合成一个构建单元,简化多模块项目的构建过程,提高构建效率。继承则让子项目重用父项目的配置和属性,避免了重复定义,增强了项目的一致性和可维护性。通过聚合和继承,Maven为多模块项目的构建和管理提供了高效且灵活的支持,减少了配置冗余,提升了开发效率。
【揭秘】Maven聚合与继承:如何轻松实现项目依赖管理?
|
4天前
|
Java Maven
Maven 项目文档
学习Maven项目文档创作,借助Doxia引擎将内容转化为通用模型。支持Apt(纯文本)、Xdoc(Maven 1.x格式)、FML(FAQ)和XHTML。
|
5天前
|
Java Apache Maven
Maven 项目文档Maven 项目文档
Maven使用Doxia引擎将多种格式(如Apt、Xdoc、FML和XHTML)转换为通用文档模型。在创建Maven项目文档时,例如在C:/MVN下创建consumerBanking项目,需运行指定的mvn archetype:generate命令。接着,更新pom.xml,确保包含maven-site-plugin和maven-project-info-reports-plugin的最新版本(至少3.3和2.7),以避免NoClassDefFoundError。执行`mvn site`命令生成文档。
|
5天前
|
Java Apache Maven
Maven 项目文档
本教程介绍如何创建 Maven 项目文档。在 C:/MVN 目录下,使用命令 `mvn archetype:generate` 创建 `consumerBanking` 项目。为解决运行 `mvn site` 时的 NoClassDefFoundError,需在 `pom.xml` 中添加并更新 `maven-site-plugin` 至版本 3.3。执行 `mvn site` 后,Maven 生成包括&quot;About&quot;, &quot;Issue Tracking&quot;等报告的文档。成功后,文档位于 `target/site/index.html`。
|
7天前
|
Java Scala Maven
Maven 项目模板
Maven的`archetype`用于创建定制项目结构,即项目模板。通过`mvn archetype:generate`命令能快速生成如Java应用的项目。在命令行中执行该命令后,会列出多个远程模板选项供选择。用户可输入数字或应用过滤器,按Enter选择默认(203:maven-archetype-quickstart)来创建简单Java应用程序。
|
7天前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入 LDAP 操作库 ldapjdk.jar,需将 jar 文件放入 src/lib 文件夹,并在 pom.xml 的 dependencies 部分添加依赖配置
|
8天前
|
XML Java 测试技术
Maven 构建 & 项目测试
该文介绍了如何使用Maven进行Java应用的构建与测试。在`C:/MVN/consumerBanking`项目中,`pom.xml`配置了JUnit依赖。Maven默认创建了源码和测试文件,通过命令`mvn clean package`进行构建,生成`consumerBanking-1.0-SNAPSHOT.jar`。测试报告在`surefire-reports`文件夹。新增`Util`类并更新`App`后,执行`mvn clean compile`编译,然后运行`java -cp . com.companyname.bank.App`显示&quot;Hello World!&quot;。
|
2月前
|
XML Java Maven
【Maven技术专题】「实战开发系列」盘点Maven项目中打包需要注意到的那点事儿
【Maven技术专题】「实战开发系列」盘点Maven项目中打包需要注意到的那点事儿
43 0

热门文章

最新文章

推荐镜像

更多