`
hanqunfeng
  • 浏览: 1543527 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

《Maven实战》学习笔记(2)--POM简单设置

 
阅读更多

基本信息:
    <modelVersion>4.0.0</modelVersion> :Maven3固定不变
  <groupId>com.netqin.framework</groupId> :定义项目隶属于哪个组,是一个实际的项目
  <artifactId>frame-core</artifactId> :项目模块名称
  <packaging>jar</packaging> :打包方式,默认jar,可以配置war,pom(聚合项目)
  <version>0.0.1-SNAPSHOT</version>:项目版本
  <name>netqin foamework core</name> :项目一个比较易读的名称
  <url>http://maven.apache.org/frame-core</url> :项目访问地址

聚合项目:
  <modelVersion>4.0.0</modelVersion>
 <groupId>com.netqin.framework</groupId>
 <artifactId>frame-framework</artifactId>
  <version>0.0.1-SNAPSHOT</version>
 <packaging>pom</packaging>
 <name>netqin foamework</name>
 <url>http://maven.apache.org</url>

    <modules>
      <module>frame-core</module>
      <module>frame-service</module>
  </modules>

子模块:
 <modelVersion>4.0.0</modelVersion> :无论聚合项目还是子项目,都必须包含该配置
 <parent>
    <artifactId>frame-framework</artifactId>
    <groupId>com.netqin.framework</groupId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
 
  <artifactId>frame-core</artifactId>:其余属性默认与父模块相同
  <packaging>jar</packaging>
  <name>netqin foamework core</name>
 
 
  <build>
    <finalName>frame-core</finalName>:生成的包的名称
  </build>

聚合和子模块都可以配置如下内容:
1.属性
 <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
2.依赖
<dependencies>
      <dependency>
          <groupId>spring</groupId>
          <artifactId>spring-core</artifactId>
          <version>1.0.2</version>:以上三项为必填项,version在子模块继承时可以不用声明
          <type>jar</type>:依赖类型,默认为jar,对应于项目的packaging,一般不用声明
          <scope>compile</scope>:依赖范围,默认compile,编译、测试、运行都有效,比如spring-core
        <optional>true</optional>:可选依赖,既只对当前项目有效,不会传递给子模块
          <exclusions>:排除依赖,既排除掉当前依赖下对应依赖包,既项目编译时不会导入该依赖包,可以在下面声明一个高级版本进行替换
              <exclusion>
                  <groupId>com.test.demo</groupId>   
                  <artifactId>demo-core</artifactId>
              </exclusion>
          </exclusions>

      </dependency>
    <dependency>
          <groupId>com.test.demo</groupId>
          <artifactId>demo-core</artifactId>
          <version>1.0.2</version>:换个高级版本
          <type>jar</type>
          <scope>compile</scope>
       
      </dependency>

      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.10</version>
          <type>jar</type>
          <scope>test</scope>:只对测试范围有效,比如Junit。
                        另外还可配置provided:编译和测试有效,运行无效,比如servlet-api。
                                                                runtime:测试和运行时有效。
                       import:导入其它pom中的<dependencyManagement>,该元素只在<dependencyManagement>中可以使用,如下内容介绍。
                       
      </dependency>
  </dependencies>

dependencies:会被子模块继承,如果不希望子模块继承,可以使用如下配置:

<dependencyManagement>
  <dependencies>
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>${juint.version}</version>
          <type>jar</type>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>${springframework.version}</version>
          <type>jar</type>
          <scope>compile</scope>
      </dependency>
    <dependency>
          <groupId>org.test</groupId>
          <artifactId>test</artifactId>
          <version>1.0.0version>
          <type>pom</type>:只能是pom
          <scope>import</scope>:将该坐标对应的聚合项目中的<dependencyManagement>合并到当前的<dependencyManagement>中来
      </dependency>

  </dependencies>
 </dependencyManagement>

<dependencyManagement>:被该元素包裹起来的依赖不会被子模块继承,
                                              如果子模块中要使用,需要在dependencies中声明,但这时可以之生命groupId和artifactId,比如:



3.插件
 <build>
    <plugins>

    <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <version>2.4.1</version>
        <executions>
          <execution>
            <id>default-clean</id>
            <phase>clean</phase>:绑定clean生命周期
            <goals>
              <goal>clean</goal>:绑定clean生命周期的clean目标
            </goals>
          </execution>
        </executions>
      </plugin>  
    </plugins>
  </build>

上述配置,子模块也会继承,类似<dependencyManagement>,如果不希望子模块继承,可以如下配置:
<build>
      <pluginManagement>
          <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-source-plugin</artifactId>
                  <version>2.1.2</version>
              </plugin>
          </plugins>
      </pluginManagement>
  </build>
子模块只要如下配置即可:
<build>
        <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-source-plugin</artifactId>
            </plugin>
      </plugins>
  </build>

插件需要绑定到某个生命周期才可以使用

依赖项目命令:
1.查看当前项目的已解析依赖,类似于eclipse的pom查看器中的Dependency Hierarchy的右侧视图
mvn dependency:list
2.查看当前项目的已解析依赖,类似于eclipse的pom查看器中的Dependency Hierarchy的左侧视图
mvn dependency:tree
3.查看项目使用了但是依赖没有声明,或者是声明了没有使用
mvn dependency:analyze
比如,没有使用到spring-core,但是项目中声明了
[WARNING] Unused declared dependencies found:
[WARNING]    org.springframework:spring-core:jar:3.0.6.RELEASE:compile



分享到:
评论

相关推荐

    Maven入门实战笔记02-基础(2)

    总的来说,"Maven入门实战笔记02-基础(2)"很可能是对Maven基础操作的深入讲解,涵盖了项目创建、POM配置、依赖管理、生命周期和构建过程等内容,对于想要学习和掌握Maven的Java开发者来说,是一份非常实用的学习资料...

    Maven3实战笔记(整合)

    从给定的文件信息来看,标题与描述都指向了“Maven3实战笔记(整合)”,这表明文档主要聚焦于Maven3的实践应用与整合经验分享。Maven是Apache软件基金会维护的一个开源项目,是一个项目管理和综合工具,主要用于Java...

    Maven中文开发指南+实战教程+学习笔记

    **Maven实战教程** 1. **创建新项目** - 使用`mvn archetype:generate`命令创建一个新的Maven项目。 - 选择合适的archetype模板,根据提示输入项目信息。 2. **项目构建与调试** - 使用`mvn install`命令将项目...

    Maven3实战笔记(全)

    《Maven3实战笔记(全)》是一本全面深入介绍Maven3的实践指南,由一位具有独特风格的作者撰写,以其风趣幽默的方式解析了Maven3的各种核心概念和使用技巧。这本书涵盖了从Maven的基础安装与配置,到复杂的仓库依赖...

    Maven3 学习笔记

    【标题】:“Maven3 学习笔记” 在软件开发领域,Maven 是一个非常重要的构建工具,尤其在Java世界中占据着主导地位。Maven3 是 Maven 的第三个主要版本,它增强了性能,提升了用户体验,并引入了更多现代化的构建...

    Maven3实战笔记.pdf

    标题中提及的“Maven3实战笔记”指向了Maven这款流行的Java项目管理和自动化构建工具的第三个主要版本。Maven自从引入以来,就极大地简化了Java项目的构建过程,提高了项目构建的标准化程度。它使用项目对象模型...

    Maven3实战笔记02项目需求和模块分析

    在Maven3的实战学习中,第二部分着重于项目需求分析与模块划分,这是构建大型、复杂项目时的基础工作,能够帮助开发者更好地理解项目架构,合理分配资源,提高开发效率。 #### 项目需求分析 项目需求分析是软件...

    尚硅谷Maven课程笔记代码资源

    【尚硅谷Maven课程笔记代码资源】是一份全面学习Maven的资料集合,它涵盖了从基础到高级的各种知识点,旨在帮助开发者深入理解并熟练运用Maven进行自动化构建。该资源包含课件、源码和相关的笔记,使得学习过程更加...

    Maven实战笔记

    **Maven实战笔记** 在Java开发领域,Maven是一个不可或缺的构建工具,它极大地简化了项目的构建、管理和依赖管理过程。Maven通过一个统一的项目对象模型(Project Object Model,POM),使得开发者可以轻松地定义...

    《IT学习资料》-SSM实战项目-Java高并发秒杀API,详细流程+学习笔记.zip

    9. **pom.xml**:Maven的配置文件,定义了项目依赖、插件和构建设置。通过Maven,开发者可以轻松管理和构建项目,确保所有依赖库都能正确引入。 10. **sql**:可能包含了数据库的初始化脚本,用于创建秒杀系统的...

    Maven学习资源打包汇总

    《Maven实战》是一本实践导向的书籍,涵盖了Maven在实际项目中的应用,包括设置环境变量、配置构建服务器、集成持续集成工具如Jenkins,以及使用Maven进行部署。此外,它还介绍了一些高级话题,如使用Maven进行敏捷...

    maven3含教程

    **正文** Maven3是一个强大的Java项目管理工具,由Apache软件基金会开发,它极大地简化了...通过"apache-maven-3.0.4"的使用和"Maven3实战笔记"的学习,开发者可以全面掌握Maven的精髓,更好地服务于软件开发工作。

    《java学习》-SSM实战项目-Java高并发秒杀API,详细流程+学习笔记.zip

    本项目提供了详细的流程说明和学习笔记,帮助开发者更好地掌握相关知识。 首先,`pom.xml`文件是Maven项目的配置文件,它定义了项目依赖,包括SSM框架的各个版本和其他必要的库。通过管理依赖关系,Maven能够自动...

    《IT学习资料2》-SSM实战项目-Java高并发秒杀API,详细流程+学习笔记.zip

    这个项目不仅包含了详细的操作流程,还有学习笔记,帮助开发者深入理解相关技术。 首先,SSM框架是Java Web开发中的经典组合,它将Spring的依赖注入、SpringMVC的MVC模式和MyBatis的持久层操作结合在一起,提高了...

    springboot学习笔记(史上最全)

    **SpringBoot学习笔记** SpringBoot是由Pivotal团队开发的一款基于Java的轻量级框架,旨在简化Spring应用的初始搭建以及开发过程。它通过自动配置、起步依赖和运行时嵌入式服务器,使得开发者能够快速地创建独立的...

    Spring MVC 学习笔记 一 创建项目

    **Spring MVC 学习笔记 一 创建项目** 在IT领域,Spring MVC是Java Web开发中的一个强大框架,它简化了构建交互式Web应用程序的过程。本笔记将深入探讨如何创建一个基本的Spring MVC项目,让我们开始吧。 首先,...

    SpringBoot与Shiro整合-权限管理实战-课堂笔记.docx

    【SpringBoot与Shiro整合-权限管理实战】的课程主要关注如何将Spring Boot与Apache Shiro框架结合起来,实现高效的安全管理。Spring Boot是Spring框架的一个简化版本,旨在提高开发效率,减少配置工作,同时提供了很...

Global site tag (gtag.js) - Google Analytics