【Maven】工程中可能用到的pom.xml

Maven父子工程配置详解
本文详细解析了Maven工程中父工程与子工程的配置方法,包括如何在父工程中进行依赖管理和聚合,以及子工程如何继承父工程的设置并进行特定的依赖排除和配置声明。

父工程的pom.xml中可能存在的标签

 

<!-- 指定打包类型,如果打包类型为jar,可以省略不指定,如果为war或者是pom,必须显示指定 -->

  <packaging>pom</packaging>

 

  <!-- 依赖的管理--子工程中都要使用到的jar包 【1】-->

  <dependencyManagement>

       <dependencies>

                <dependency>

                         <groupId>junit</groupId>

                            <artifactId>junit</artifactId>

                            <version>4.9</version>

                            <scope>test</scope>

                </dependency>

       </dependencies>

  </dependencyManagement>

 

  <!-- 聚合 -->

  <modules>

       <module>../MakeFriend</module>

       <module>../HelloFriend</module>

       <module>../OurFriend</module>

       <module>../Hello</module>

  </modules>

子工程的pom.xml中可能会用到标签

<!-- 模块版本 -->

         <modelVersion>4.0.0</modelVersion>

        

         <!-- 坐标 -->

         <!-- <groupId>com.test.maven</groupId> -->

         <artifactId>HelloFriend</artifactId>

         <!-- <version>0.0.1-SNAPSHOT</version> -->

        

         <!-- 模块名/ 项目名/ 工程名 -->

         <name>Hello</name>

        

         <!-- 继承【1】 要先声明继承-->

         <parent>

                   <groupId>com.test.maven</groupId>

                <artifactId>Parent</artifactId>

                <version>0.0.1-SNAPSHOT</version>

<!-- 指定从当前子工程的pom.xml文件出发,查找父工程的pom.xml的路径 -->

                   <relativePath>../Parent/pom.xml</relativePath>

         </parent>

         <!-- jar包的依赖 【1】继承父工程的jar包,可省略groupId和version -->

         <dependencies>

                   <!-- Junit  -->

                   <dependency>

                            <groupId>junit</groupId>

                            <artifactId>junit</artifactId>

                            <!-- <version>4.0</version> -->

                            <scope>test</scope>

                   </dependency>

 

<!—HelloFriend依赖Hello,排除其中的一些依赖 -->

                   <dependency>

                                     <!-- 依赖的另一个工程-->

                                     <groupId>com.test.maven</groupId>

                                     <artifactId>Hello</artifactId>

                                     <version>0.0.1-SNAPSHOT</version>

                                     <scope>compile</scope>

                                     <!-- 依赖的排除 -->

                                     <exclusions>

                                               <exclusion>

                                                        <groupId>commons-logging</groupId>

                                                        <artifactId>commons-logging</artifactId>

                                               </exclusion>

                                               <exclusion>

                                                        <groupId>org.springframework</groupId>

                                                    <artifactId>spring-core</artifactId>

                                               </exclusion>

                                     </exclusions>

                            </dependency>

                   <!-- log4j -->

                   <dependency>

                            <groupId>log4j</groupId>

                            <artifactId>log4j</artifactId>

                            <version>1.2.17</version>

                            <scope>compile</scope>

                   </dependency>

 

                   <!-- 声明配置【2】 -->

             <properties>

                   <!-- 定义表示spring版本的变量 -->

                      <spring-version>4.0.0.RELEASE</spring-version>

            </properties>

                   <!-- Spring-core  【2】-->

                   <dependency>

                      <groupId>org.springframework</groupId>

                      <artifactId>spring-core</artifactId>

                      <version>${spring-version}</version>

                   </dependency>

</dependencies>

        

         <build>

                   <plugins>

                   <!-- 解决maven test命令时console出现中文乱码乱码 -->

                            <plugin>

                            <groupId>org.apache.maven.plugins</groupId>

                            <artifactId>maven-surefire-plugin</artifactId>

                            <version>2.7.2</version>

                            <configuration>

                                     <forkMode>once</forkMode><!--在一个进程中进行所有测试 ; 默认值:once -->

                                     <argLine>-Dfile.encoding=UTF-8</argLine>

                            </configuration>

                            </plugin>

                   </plugins>

         </build>

 
 

 

<think>我们正在讨论Maven项目中的依赖管理。用户询问了“如果你使用Maven项目,请在pom.xml中添加以下依赖”这句话的含义。Maven是一个项目管理和构建工具,它通过pom.xml(ProjectObjectModel)文件来管理项目的配置,包括依赖项。在pom.xml中添加依赖意味着我们告诉Maven:这个项目需要用到哪些外部的库(例如MySQL的JDBC驱动),Maven会自动从仓库下载这些库并添加到项目的classpath中。现在,我将详细解释如何操作以及代码的含义。但是,注意用户的问题只要求解释这句话,所以我们不需要提供整个成绩统计系统的代码,而是专注于解释如何在Maven项目中添加依赖,以及为什么需要这样做。此外,根据用户要求,我们最后要提出相关问题。</think> 好的,让我详细解释在 Maven 项目中添加依赖到 `pom.xml` 文件的含义及其重要性。 ### Maven 项目中的依赖管理 在 Java 开发中,**Maven** 是一个广泛使用的项目管理工具,而 `pom.xml` (Project Object Model) 是 Maven 项目的核心配置文件。当你需要在项目中引入外部库时(比如 MySQL 驱动),就需要在 `pom.xml` 中添加相应的依赖项。 #### 解释 "添加依赖" 当我说: > 如果你使用 Maven 项目,请在 `pom.xml` 中添加以下依赖: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency> ``` 这表示: 1. **groupId**:`mysql` - 代表该依赖的开发者或组织(这里是 Oracle/MySQL 官方) 2. **artifactId**:`mysql-connector-java` - 标识依赖项的具体名称(MySQL 的 Java 驱动) 3. **version**:`8.0.30` - 指定所需的具体版本 #### Maven 工作原理图解 ``` ┌────────────────────────┐ ┌───────────────────────┐ │ 你的Java项目代码 │ │ Maven中央仓库 │ │ (使用JDBC API连接数据库) │ │ (存储所有开源Java库) │ └──────────┬─────────────┘ └──────────┬────────────┘ │ │ │ 1. 项目构建时需要MySQL驱动 │ │───────────────────────────────>│ │ │ │ 2. 返回mysql-connector-java │ │<───────────────────────────────│ │ ┌──────────▼─────────────┐ │ Maven本地仓库 │ │ (~/.m2/repository) │ └─────────────────────────┘ ``` ### 为什么需要添加依赖? 1. **访问数据库驱动**: 要在 Java 程序中使用 `DriverManager.getConnection()` 连接 MySQL,需要实际存在的 JDBC 驱动类(如 `com.mysql.cj.jdbc.Driver`)。 2. **自动解决依赖**: Maven 会自动从中央仓库下载所需库及其依赖项(例如:`mysql-connector-java` 依赖了 `protobuf-java`)。 3. **统一版本管理**: 确保团队所有成员使用完全相同的库版本,避免兼容性问题。 4. **简化构建过程**: Maven 会将依赖项自动包含在最终打包文件(JAR/WAR)中。 ### 对比示例:不使用 Maven 如果不使用 Maven,你需要: 1. 手动下载 MySQL JDBC 驱动的 JAR 文件 2. 将 JAR 添加到项目的构建路径 3. 在 IDE 中配置库路径 4. 团队协作时需要确保所有成员路径一致 ### 实际应用示例 假设你有一个连接数据库的 Java 方法: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DatabaseConnector { public static Connection getConnection() throws SQLException { // 以下代码需要mysql-connector-java才能正常运行 return DriverManager.getConnection( "jdbc:mysql://localhost:3306/mydb", "user", "password"); } } ``` 如果不添加 MySQL 驱动依赖,运行时会出现: ``` java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/mydb ``` ### Maven 依赖管理的进阶应用 ```xml <dependencies> <!-- MySQL 驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency> <!-- 连接池依赖 --> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>5.0.1</version> </dependency> <!-- ORM 框架 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>6.1.7.Final</version> </dependency> </dependencies> ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值