Java-Maven详解(java中的maven)

一、什么是maven

Apache Maven是一个软件项目管理的综合工具。基于项目对象模型(pom的概念,提供了帮助管理构建、文档、报告、依赖、发布等方法,Maven简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。 Maven增加可重用性并负责建立相关的任务。

Java-Maven详解(java中的maven)

1)Maven好处

  • 可以将项目过程规范化、自动化、高效化以及强大的可扩展性,利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。
  • 使得项目的管理变得容易,构建项目的速度更快,由于Maven提供了仓库的概念去管理JAR包,所以用git或者svn的时候,存储构建的项目体积会更小。

2)作用

管理项目的构建、文档生成、报告、依赖、SCMs(software configuration Management)、分布、分发、邮件列表。

二、Maven的基本原理

采用远程仓库和本地仓库以及一个核心的配置文件pom.xml,pom.xml中定义的jar文件从远程仓库下载到本地仓库,各个项目使用同一个本地仓库的jar,同一个版本的jar只需下载一次,而且避免每个应用都去拷贝jar。同时它采用了现在流行的插件体系架构,所以maven的核心非常的小,只有几兆大小的文件,在执行maven任务时,才会自动下载需要的插件。 

具体的概念模型如下图:

Java-Maven详解(java中的maven)

Maven官方把maven定义为一个项目管理工具,下面我们来看看maven给我们的项目管理做了哪些工作?

  • 项目标准化

Maven项目具有统一的项目结构,这个项目结构是参考业界的最佳实践而成,为后面使用统一的maven命令打下了基础,如测试mvn Test、打包mvn package等,无需写一行脚本,就可以方便的实现众多功能。

  • 文档和报告

使用mvn site可以快速生成项目站点,apache很多开源项目站点都采用maven生成,会出现built by maven字样的图标。

  • 类库管理

类库管理是maven一个比较核心的功能,我们就需要将项目所依赖的类库加入到pom.xml中,那么maven会自动将依赖的类库下载到本地,并且下载的类库如果还依赖其他的类库,它也会自动下载过来,这样我们就不需要一个一个类库去下载了。

发布管理

使用maven可以方便的进行项目发表管理。在项目开发到一定阶段,可以使用mvn package打包,它会自动先运行mvn test,跑所有的Test Case,只有全部通过才能正确打包。生成的war包(如果项目的packaging为war)在target目录下。这个 war包与使用ant脚本生成一样,但无需一行脚本,这也是maven对比ant的优势之一。使用mvn install将编译和打包好的文件发布到本地仓库中。使用mvn deploy在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository。

三、Maven安装

官网地址:http://maven.apache.org/
Maven下载地址:http://maven.apache.org/download.cgi

Java-Maven详解(java中的maven)

这里我两个环境的版本都下载,分别在我本机和Linux虚拟机安装。

1)Window安装Maven

1、解压

# 解压的目录D:softwareMavenapache-maven-3.8.4-bin

Java-Maven详解(java中的maven)

Maven根目录文件介绍:

  • bin:Maven的运行脚本。binmvn.cmd是基于windows的脚本。在cmd中每输入一条mvn的命令都是在调用并执行这些脚本。
  • boot:该项目只有一个文件plexus-classworlds-2.5.2.jar。他是一个类加载器的框架,相当于对jdk中的类的加载器,提供了丰富的语法以此用来方便配置,Maven使用该框架加载自己的类库。
  • conf:该目录包含了一个非常重要的文件setting.xml。配置该文件就可以在Project中定制Maven的行为。
  • lib:包含了所有Maven运行时需要的Java类库以及用到的第三方类库。
  • LICENSE:软件许可
  • NOTICE:软件引用的三方软件
  • README.txt:包含了Maven的简介

2、Maven环境变量配置

  • 依赖Java,需要配置JAVA_HOME,没有装jdk的还得先装jdk
  • 设置Maven自身自身的运行环境,需要配置MAVEN_HOME
  • 配置完JAVA_HOME和MAVEN_HOME,还得配置Path,在Path加上:%JAVA_HOME%bin和%MAVEN_HOME%bin

Java-Maven详解(java中的maven)

3、验证

# 这里使用git bash$ java -version$ mvn -v

Java-Maven详解(java中的maven)

4、配置本地仓库(资源下到哪)

# 创建本地存放jar包目录D:softwareMavenrepository# 找到maven安装目录下conf/settings.xml

Java-Maven详解(java中的maven)

5、配置阿里镜像仓库(资源从哪来)

先查找默认的配置,在lib目录下随便找个jar包用解压工具打开-》再回到上层目录-》ctrl F搜索pom.找到pom-4.0.0.xml-》把这个文件拖出来打开

Java-Maven详解(java中的maven)

Java-Maven详解(java中的maven)

Java-Maven详解(java中的maven)

Java-Maven详解(java中的maven)

但是注意不是去修改jar包里面的这个配置,还是回到conf/setting.xml这个配置文件,修改这个配置文件。

<mirror> <!-- 此镜像的唯一标识,用来区分不同的mirror元素 --> <id>nexus-aliyun</id> <!-- 对哪种仓库进行镜像,简单的就是替代哪个仓库 --> <mirrorOf>central</mirrorOf> <!-- 镜像名称 --> <name>Nexus aliyun</name> <!-- 镜像url --> <url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>

Java-Maven详解(java中的maven)

2)Linux安装Maven

1、下载解压

$ mkdir -p /opt/software$ cd /opt/software$ wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz$ tar -zvxf apache-maven-3.8.4-bin.tar.gz -C /opt/software/

2、配置环境变量

# 在/etc/proFileexport PATH=/opt/software/apache-maven-3.8.4/bin:$PATH# 加载生效$ source /etc/profile

3、验证

$ java -version$ mvn -v

Java-Maven详解(java中的maven)

四、创建Maven项目

1)手动构建maven项目

默认git bash是没有tree命令的,这里提供下载地址:
官网下载地址:http://gnuwin32.sourceforge.net/packages/tree.htm
百度云下载地址:
链接:https://pan.baidu.com/s/17fc79rQUQSnBhWzej9xd9g
提取码:6666
把tree.exe放到git安装目录下的usr/bin/目录下

1、创建文件

### 查看创建的目录和目录结构$ tree hello/$ cat hello/src/main/java/com/test2022/Hello.java$ cat hello/src/test/java/com/test2022/HelloTest.java$ cat hello/pom.xml

Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)

2、编译(mvn compile)

$ cd hello$ mvn compile

发现编译报错了:

【问题】 [ERROR] 不再支持源选项 5。请使用 7 或更高版本。
[ERROR] 不再支持目标选项 5。请使用 7 或更高版本。

Java-Maven详解(java中的maven)

  • 【解决方案一】修改全局,修改maven安装目录下conf/setting.xml文件,配置jdk,内容如下:

<profile> <id>jdk-13</id> <activation> <activeByDefault>true</activeByDefault> <jdk>13</jdk> </activation> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>13</maven.compiler.source> <maven.compiler.target>13</maven.compiler.target> </properties></profile>

  • 【解决方案二】修改局部,修改项目目录下的 pom.xml文件,配置jdk,内容如下:

<properties> <!-- 这里填jdk的版本,我使用的是jkd13 --> <maven.compiler.target>13</maven.compiler.target> <maven.compiler.source>13</maven.compiler.source></properties>

这里我采用【解决方案一】修改全局的配置

再编译,编译成功

$ mvn compile

Java-Maven详解(java中的maven)

3、清理(mvn clean)

$ mvn clean# 发现上面编译产生的target目录会删掉$ tree .

Java-Maven详解(java中的maven)

4、测试(mvn test)

$ mvn test

Java-Maven详解(java中的maven)

5、打包(mvn package)

【温馨提示】这里只打包编译好的源程序(xxx.class文件

$ mvn package

Java-Maven详解(java中的maven)

6、安装到本地仓库(mvn install)

【温馨提示】这里groupid决定放在仓库的哪个文件下,配置<groupId>com.hello</groupId>,所以生成的包就会放在仓库目录的com/hello目录下。

Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)

会经历编译(compile)-》测试(test)-》打包(package) -》安装(install)的过程。

Java-Maven详解(java中的maven)

2)通过maven插件构建项目(命令行操作)

1、构建工程(模板)

模板:

mvn archetype:generate
-DgroupId={project-packaging}
-DartifactId={project-name}
-DarchetypEARtifactId=maven-archetype-quickstart
-DinteractiveMode=false

示例:

2、构建java工程

$ mvn archetype:generate -DgroupId=com.test2022 -DartifactId=java-project -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -DinteractiveMode=false

Java-Maven详解(java中的maven)

目录结构

Java-Maven详解(java中的maven)

3、构建web工程

$ mvn archetype:generate -DgroupId=com.test2022 -DartifactId=web-project -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -DinteractiveMode=false

Java-Maven详解(java中的maven)

目录结构

Java-Maven详解(java中的maven)

3)通过IDEA创建空项目来构建maven java项目

【温馨提示】IDEA官网下载地址:https://www.jetbrains.com/idea/

1、创建一个Empty Project

Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)

2、配置jdk

Java-Maven详解(java中的maven)

3、配置maven

File->Settings,把默认配置自带的maven修改上面下载的版本

Java-Maven详解(java中的maven)

4、创建maven工程

Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)

5、编写测试代码

Java-Maven详解(java中的maven)

6、编译构建

Java-Maven详解(java中的maven)

7、配置运行环境

Java-Maven详解(java中的maven)

配置编译

Java-Maven详解(java中的maven)

配置清理

Java-Maven详解(java中的maven)

右上角就有两个运行的快捷选项了

Java-Maven详解(java中的maven)

4)通过IDEA模板构建maven java项目

1、搜索quickstart模板创建

Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)

2、默认的目录结构

会默认创建一个org.example的demo,可以删掉

Java-Maven详解(java中的maven)

3、手动创建缺少的目录

发现main和test里面都没创建resources,下面我们手动创建

Java-Maven详解(java中的maven)

4、修改目录属性

如果创建的是普通目录,则可以右键目录修改目录属性

Java-Maven详解(java中的maven)

5)通过IDEA模板构建maven java-web项目

1、搜索webapp模板创建

Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)

2、默认目录结构

Java-Maven详解(java中的maven)

3、手动创建没创建的目录

Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)

4、创建一个index.jsp文件

Java-Maven详解(java中的maven)

5、添加tomcat插件

在maven库中搜索tomcat:https://mvnrepository.com/

Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)

这里使用2.1版本的

Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)

<build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>80</port> <path>/</path> </configuration> </plugin> </plugins></build>

Java-Maven详解(java中的maven)

6、运行web工程

【温馨提示】默认端口是8080,上面配置的80

Java-Maven详解(java中的maven)

发现报错了
严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

【原因&解决】是因为默认创建的web.xml配置文件里有spring的配置,先把这些配置删掉就行。最后web.xml只保留如下内容:

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"></web-app>

再运行

Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)

7、配置快捷运行方式

Java-Maven详解(java中的maven)Java-Maven详解(java中的maven)

五、Maven依赖管理

1)依赖配置

依赖指当前项目运行所需的jar包,一个项目可以设置多个依赖,示例如下:

<!-- 设置当前项目所有依赖的所有jar包 --><dependencies> <!-- 设置具体的依赖 --> <dependency> <!-- 依赖所属群组id --> <groupId>junit</groupId> <!-- 依赖所属项目id --> <artifactId>junit</artifactId> <!-- 依赖版本号 --> <version>4.12</version> </dependency></dependencies>

2)依赖传递

依赖具有传递性:

  • 间接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 直接依赖:被资源的资源如果依赖其它资源,当前项目间接依赖其它资源

3)依赖管理

1、依赖传递冲突问题

  • 路径优先:当前依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高。
  • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的。
  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的。

2、可选依赖

可选依赖指对外隐藏当前所依赖的资源—-不透明

<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <!-- 配置不透明 --> <optional>true</optional></dependency>

3、排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本—-不需要

<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <!-- 配置排除依赖 --> <exclusions> <exclusion> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> </exclusion> </exclusions></dependency>

4、依赖范围

  • 依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定起作用范围
  • 作用范围主程序范围有效(main文件夹范围内)测试程序范围有效(test文件夹范围内)是否参与打包(package指令范围内)

Java-Maven详解(java中的maven)

5、依赖范围的传递性

带有依赖范围的资源在进行传递时,作用范围将受到影响

Java-Maven详解(java中的maven)

六、生命周期与插件

1)项目构建生命周期

Maven构建生命周期描述的是一次构建过程经历了多少的事件

Java-Maven详解(java中的maven)

2)Maven对构建的生命周期划分三个阶段

  • clean:清理工作
  • default:核心工作,例如编译、测试、打包、部署等。
  • site:产生报告,发布站点等。

1、clean生命周期

  • pre-clean:执行一些需要在clean之前完成的工作
  • clean:移除所有上一次构建生成的文件
  • post-clean:执行一些需要在clean之后立刻完成的工作

2、default构建生命周期

  • validate (校验):校验项目是否正确并且所有必要的信息可以完成项目的构建过程。
  • initialize (初始化):初始化构建状态,比如设置属性值。
  • generate-sources (生成源代码):生成包含在编译阶段中的任何源代码。
  • process-sources (处理源代码):处理源代码,比如说,过滤任意值。
  • generate-resources (资源文件):生成将会包含在项目包中的资源文件。
  • process-resources (处理资源文件):复制和处理资源到目标目录,为打包阶段最好准备。
  • compile (编译):编译项目的源代码。
  • process-classes (处理类文件):处理编译生成的文件,比如说对Java class文件做字节码改善优化。
  • generate-test-sources (生成测试源代码):生成包含在编译阶段中的任何测试源代码。
  • process-test-sources (处理测试源代码):处理测试源代码,比如说,过滤任意值。
  • generate-test-resources (生成测试资源文件):为测试创建资源文件。
  • process-test-resources (处理测试资源文件):复制和处理测试资源到目标目录。
  • test-compile (编译测试源码):编译测试源代码到测试目标目录。
  • process-test-classes (处理测试类文件):处理测试源码编译生成的文件。
  • test (测试):使用合适的单元测试框架运行测试(Juint是其中之一)。
  • prepare-package (准备打包):在实际打包之前,执行任何的必要的操作为打包做准备。
  • package (打包):将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。
  • pre-integration-test (集成测试前):在执行集成测试前进行必要的动作。比如说,搭建需要的环境。
  • integration-test (集成测试):处理和部署项目到可以运行集成测试环境中。
  • post-integration-test (集成测试后):在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。
  • verify (验证):运行任意的检直来验证项目包有效达到质量标准。
  • install (安装):安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。
  • deploy (部署):将最终的项目包复制到远程仓库中与其他开发者和项目共享。

【温馨提示】:像compile、test、test-compile、package、install等,排在它们前面的步骤都会执行。图示如下:

Java-Maven详解(java中的maven)

3、site构建的生命周期

  • pre-site:执行一些需要在生成站点文档之前完成的工作
  • site:生成项目的站点文档
  • post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
  • site-deploy:将生成的站点文档部署到特殊的服务器上

3)插件

插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能,默认maven在各个生命周期上绑定有预设的功能,通过插件可以自定义其他功能。

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <goals> <goal>jar</goal> </goals> <phase>generate-test-resources</phase> </execution> </executions> </plugin> </plugins></build>

七、工程版本管理

  • SNAPSHOT (快照版本)

项目开发过程中,为方便团队成员合作,解决模块间相互依赖和时时更新的问题,开发者对每个模块进行构建的时候,输出的临时性版本叫快照版本(测试阶段版本),快照版本会随着开发的进展不断更新。

  • RELEASE (发布版本)

项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本。

工程版本号约定规范:

【版本格式】<主版本>.< 次版本>.<i曾量版本 >.<里程碑版本>

  • 主版本:表示项目重大架构的变更,如:spring5相较于spring4的迭代
  • 次版本:表示有较大的功能增加和变化,或者全面系统地修复漏洞
  • 增量版本:表示有重大漏洞的修复
  • 里程碑版本:表明一个版本的里程碑(版本内部)。这样的版本同下一个正式版本相比,相对来说不是很稳定,有待更多的测试。

【范例】

5.1.9.RELEASE或5.1.9-RELEASE

八、多环境资源配置

一般公司至少有三套环境(开发、测试、生产),如果每次把程序打包好上传到对应的环境之前就得更改一下配置,是很烦的操作,所以就有了这里的多环境资源配置了。

Java-Maven详解(java中的maven)

示例:

<!-- 创建多环境 --><profiles> <!-- 定义具体的环境:开发环境 --> <profile> <id>dev</id> <!--…… --> </profile> <!-- 定义具体的环境:测试环境 --> <profile> <id>test</id> <!--…… --> </profile> <!-- 定义具体的环境:生产环境 --> <profile> <!-- 定义环境对应的唯一id --> <id>pro</id> <!-- 定义环境中专用的属性 --> <properties> <jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url> </properties> <!-- 设置默认启动 --> <activation> <activeByDefault>true</activeByDefault> </activation> </profile></profiles>

通过命令加载指定环境

【调用格式】mvn 指令 -P 环境定义id

【示例】

$ mvn install -P pro

九、跳过测试

1)跳过测试环节的应用场景

  • 整体模块功能未开发
  • 模块中某个功能未开发完毕
  • 单个功能更新调试导致其他功能失败
  • 快速打包

2)跳过测试的两种方法

  • 使用命令跳过测试

【调用格式】mvn 指令 –D skipTests

  • 使用配置跳过测试

<plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> <configuration> <!-- 设置跳过测试 --> <skipTests>true</skipTests> <!-- 包含指定测试用例 --> <includes> <include>**/User*Test.java</include> </includes> <!-- 排除指定测试用例 --> <excludes> <exclude>**/User*TestCase.java</exclude> </excludes> </configuration></plugin>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年6月13日 上午8:09
下一篇 2022年6月13日 上午8:11

相关推荐

  • 新时期,如何实现基于BIM的项目管理咨询?(新时期,如何实现基于bim的项目管理咨询服务)

    版权声明:本文刊登于《中国勘察设计》杂志2021年8月刊,版权为《中国勘察设计》杂志社及作者所有,欢迎转载,转载请注明作者及出处。 基于BIM的项目管理咨询 同炎数智科技(重庆)有…

    科研百科 2024年4月25日
    102
  • 微信小游戏的设计和开发(微信小游戏的设计和开发方案)

    微信平台不但承载了聊天相关的基础属性,同时也有公众号的媒体属性、小程序的工具属性和支付的金融属性,是一个大而全的平台。因此越来越多的开发者基于小程序进行游戏开发,简单易用,支付方便…

    科研百科 2023年5月3日
    192
  • 企业管理系统软件

    企业管理系统软件:企业运营的核心支持 企业管理系统软件是现代企业运营的核心支持,可以帮助企业高效地管理业务流程,提高生产力和效率,降低运营成本,增强企业的竞争力。 企业管理系统软件…

    科研百科 2024年9月30日
    17
  • 除单一来源采购项目外(科研项目作为单一来源采购)

    科研项目作为单一来源采购 随着科技的不断发展,科研项目作为单一来源采购已经成为一种常见的采购方式。这种采购方式不仅可以保证采购的质量和可靠性,还可以降低采购的成本。本文将探讨科研项…

    科研百科 2024年8月5日
    59
  • 《中国草原科学》正式出版发行

        由中国农业科学院草原研究所所长侯向阳牵头主编的《中国草原科学》一书已由科学出版社出版并于2013年10月开始发行。李家洋、任继周、李文华、南志…

    科研百科 2022年5月17日
    275
  • 赖氨酸水平可引起瘤胃微生物代谢途径变化

      近日,中国农业科学院饲料研究所反刍动物饲料创新团队对犊牛日粮氨基酸需要量和平衡模式进行了系统性研究,发现赖氨酸缺乏对母犊牛瘤胃发酵功能和微生物区系组成具有调控作用,为反刍动物绿…

    科研百科 2022年5月13日
    272
  • 保证项目进度

    以保证项目进度为标题的中文文章: 保证项目进度的重要性 项目进度是项目成功的关键因素之一。如果项目进度拖延,那么项目的成功几率就会降低。因此,项目团队成员必须保证项目进度,以确保项…

    科研百科 2024年5月24日
    86
  • 农经所研究为定量评价H5N1禽流感防控策略提供新视角

      近日,中国农业科学院农业经济与发展研究所王济民研究员领衔的粮食安全与畜牧经济创新团队,通过建立动物流行病模拟模型,对我国H5N1高致病禽流感所采取的防控策略进行了技术和经济综合…

    科研百科 2022年5月14日
    260
  • 项目管理流程是什么

    项目管理流程是什么? 项目管理流程是指在项目启动阶段,项目团队根据项目目标和需求,制定一系列的计划,以达成项目交付成果的过程。项目管理流程通常包括以下几个阶段: 1. 项目定义:在…

    科研百科 2024年7月25日
    43
  • 旅游景区如何打造党建亮点

    旅游景区如何打造党建亮点 在旅游业的发展中,党建已经成为了一个不可或缺的部分。旅游景区作为旅游业的重要组成部分,打造党建亮点对于提高景区的形象和信誉,促进旅游业的发展具有重要的意义…

    科研百科 2024年10月8日
    17