imooc 项目管理利器 maven 课程笔记

2023-12-25 15:08

本文主要是介绍imooc 项目管理利器 maven 课程笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

https://www.imooc.com/learn/443

目录结构


 

install 之后,其他项目就可以正常地 import 了。

 


 

-DgroupId 反写域名 +项目名

-DartifactId 模块名(用连字符)

-Dversioin 版本号

-Dpackage 反写域名+项目名+模块包名

 


groupId artifactId 合成一个依赖的“坐标”

仓库和镜像仓库的地址和本地仓库路径 可以在 $MAVEN_HOME/conf/settings.xml 里配置

 

Eclipse 中的 Maven

问题:Perhaps you are running on a JRE rather than a JDK?

解决:在 BuildPath - Add library - System JRE 选择系统的 JRE运行环境 即可成功构建


 

 

 

 

 

 

插件:maven.apache.org/plugins/index.html

 

       <build>

              <plugins>

                     <plugin>

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

                           <artifactId>maven-source-plugin</artifactId>

                           <version>2.4</version>

                           <executions>

                                  <execution>

                                         <phase>package</phase>

                                         <goals>

                                                <goal>jar-no-fork</goal>

                                         </goals>

                                  </execution>

                           </executions>

                     </plugin>

              </plugins>

       </build>

 


Maven 项目和实际项目并不是一一对应的关系,因为 Maven 体现的是模块化的概念,所以一个实际项目往往被划分成很多的模块。

snapshot  alpha beta release GA 版本号的意义

http://www.blogjava.net/RomulusW/archive/2008/05/04/197985.html

https://blog.csdn.net/zmken497300/article/details/51707967/

 

<exclusion> 排除传递依赖

<dependenciesManagement> 管理依赖继承关系

 

<parent> 子模块继承

<modules> 指定模块进行编译


<scope> 依赖范围

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

开发中,如果需要使用框架,则需要将框架的 jar 包引入到项目的classpath路径中。Maven提供了三种classpath :编译,测试,运行

 Servlet

 JDBC

import http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies

 


依赖传递

山鸡-》浩南-》B哥

修改Maven Settings 文件

https://www.cnblogs.com/30go/p/7154298.html

<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>

如此就创建Maven项目识,就不需要手动修改BuildPath 中的 JDK版本了

 

exclusion 包groupId ,artifactId,不包含 version


 

依赖冲突

中心库

http://mvnrepository.com/tags/maven

commons-io

http://mvnrepository.com/artifact/commons-io/commons-io

 

山鸡-》浩南-》B哥

浩南->commons-io2.0

B哥->commons-io2.4

则 山鸡得到的是commons-io2.0,因为楠哥离山鸡更近

 

 

如,山鸡同时依赖南哥和B哥,南哥(2.0)和B哥(2.4)没有依赖关系,则哪个dependency 在前面,就用哪个版本的jar

 


 

聚合和继承

 

<packaging>pom</packaging>

...

       <modules>

              <module>../hongxing-bge</module>

              <module>../hongxing-nange</module>

              <module>../hongxing-shanji</module>

       </modules>

运行 clean install 实现继承

 

由于三个人都有Junit依赖,所以可以将junit 抽取形成父依赖

 

新建 hongxing-parent maven 项目pom 关键如下:

  <packaging>pom</packaging>

  <name>hongxing-parent</name>

  <url>http://maven.apache.org</url>

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <junit-version>3.8.1</junit-version>

  </properties>

  

  <dependencyManagement>

  <dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

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

      <scope>test</scope>

    </dependency>

  </dependencies>

    

  </dependencyManagement>

 

“子”项目引用pom如下,新增parent标签包裹父项目的坐标,依赖列表中删除version 和 scope 标签:

        <parent>

              <groupId>com.hongxing</groupId>

              <artifactId>hongxing-parent</artifactId>

              <version>0.0.1-SNAPSHOT</version>

       </parent>

       <dependencies>

              <dependency>

                     <groupId>junit</groupId>

                     <artifactId>junit</artifactId>

              </dependency>

              <dependency>

                     <groupId>commons-io</groupId>

                     <artifactId>commons-io</artifactId>

                     <version>2.4</version>

              </dependency>

       </dependencies>

 

如果不删除dependency 中的version 和 scope ,则 以子覆盖父

 

 


新建 Web 项目

一、新建 maven  模板不用之前的quickstart 而是 webapp,然后去中央仓库找到 servlet API 添加进来,如下:

<dependencies>

              <dependency>

                     <groupId>junit</groupId>

                     <artifactId>junit</artifactId>

                     <version>4.10</version>

                     <scope>test</scope>

              </dependency>

              <!--  https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->

              <dependency>

                     <groupId>javax.servlet</groupId>

                     <artifactId>javax.servlet-api</artifactId>

                     <version>3.1.0</version>

                     <!-- 只在编译和测试时运行 -->

                     <scope>provided</scope>

              </dependency>

       </dependencies>

 

二、creat floder 创建 src/main/java 和 src/test/java src/test/resources

 

三、检查 properties -> buildpatch -> scource 确保output folder 都是  项目/target/classes

 

四、检查 properties -> buildpatch -> project facets 勾选了 Dynamic Web Module

五、修改部署时的默认配置

右键项目 properties-> depolyment assembly  将 src/test  下的内容都remove掉。

五步完成即创建成功。使用package 命令将其打包并发布到指定的Web容器中,就可以在浏览器中访问了.

 

引入jetty 

<build>

              <finalName>webdemo</finalName>

              <plugins>

                     <plugin>

                           <!--  https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-maven-plugin -->

                                  <groupId>org.eclipse.jetty</groupId>

                                  <artifactId>jetty-maven-plugin</artifactId>

                                  <version>9.4.12.RC1</version>

                     </plugin>

              </plugins>

       </build>

 

Run As -> Maven Build  -> jetty:run

成功运行后,访问localhost:8080即可看到 Hello World! 内容。

 

 

不想每次输入 jetty:run,打包成功后使用jetty:run来运行jetty服务, 可以修改pom plugin 的execution标签,如下:

<build>

              <finalName>webdemo</finalName>

              <plugins>

                     <plugin>

                           <!--  https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-maven-plugin -->

                           <groupId>org.eclipse.jetty</groupId>

                           <artifactId>jetty-maven-plugin</artifactId>

                           <version>9.4.11.v20180605</version>

                           <executions>

                                  <execution>

                                         <!-- 打包成功后使用jetty:run来运行jetty服务 -->

                                         <phase>package</phase>

                                         <goals>

                                                <goal>run</goal>

                                         </goals>

                                  </execution>

                           </executions>

                     </plugin>

              </plugins>

       </build>

 

注意关掉之前正在运行的jetty ,否则会报端口占用的错误。

 

Tomcat

使用tomcat 也是,直接替换Jetty 的坐标即可

https://tomcat.apache.org/maven-plugin-2.2/

https://tomcat.apache.org/

<plugin>

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

  <artifactId>tomcat7-maven-plugin</artifactId>

  <version>2.2</version>

</plugin>

or

<plugin>

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

  <artifactId>tomcat6-maven-plugin</artifactId>

  <version>2.2</version>

</plugin>

<build>

              <finalName>webdemo</finalName>

              <plugins>

                     <plugin>

                           <!--  https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-maven-plugin

                                  <groupId>org.eclipse.jetty</groupId>  <artifactId>jetty-maven-plugin</artifactId>

                                  <version>9.4.11.v20180605</version> -->

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

                           <artifactId>tomcat7-maven-plugin</artifactId>

                           <version>2.2</version>

                           <executions>

                                  <execution>

                                         <!-- 打包成功后使用jetty:run来运行jetty服务 -->

                                         <phase>package</phase>

                                         <goals>

                                                <goal>run</goal>

                                         </goals>

                                  </execution>

                           </executions>

                     </plugin>

              </plugins>

       </build>

    

运行成功 http://localhost:8080/webdemo/ 

 


课程总结

 

这篇关于imooc 项目管理利器 maven 课程笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/535946

相关文章

关于Maven生命周期相关命令演示

《关于Maven生命周期相关命令演示》Maven的生命周期分为Clean、Default和Site三个主要阶段,每个阶段包含多个关键步骤,如清理、编译、测试、打包等,通过执行相应的Maven命令,可以... 目录1. Maven 生命周期概述1.1 Clean Lifecycle1.2 Default Li

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

springboot 加载本地jar到maven的实现方法

《springboot加载本地jar到maven的实现方法》如何在SpringBoot项目中加载本地jar到Maven本地仓库,使用Maven的install-file目标来实现,本文结合实例代码给... 在Spring Boothttp://www.chinasem.cn项目中,如果你想要加载一个本地的ja

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO