首页 > 其他分享 >maven的简单使用

maven的简单使用

时间:2022-12-19 11:35:15浏览次数:60  
标签:Maven 依赖 java 简单 Jar maven 编译 使用


Maven

什么是maven

         它是一个项目管理工具,使用maven对java项目进行构建、依赖管理。

Pom.xml需要配置

什么是项目构建

         一个项目从编写源代码到编译、测试、运行、打包、部署、运行的过程

Maven项目构建过程

         maven将项目构建的过程进行标准化,每个阶段使用一个命令完成,下图展示了构建过程的一些阶段,后面章节详细介绍每个阶段,这里先大概了解下:

上图中部分阶段对应命令如下:

清理阶段对应maven的命令是clean,清理输出的class文件

编译阶段对应maven的命令是compile,将java代码编译成class文件。

打包阶段对应maven的命令是package,java工程可以打成jar包,web工程可以打成war包

 

运行一个maven工程(web工程)需要一个命令:tomat:run

 

Maven工程构建的优点

         1、一个命令完成构建、运行,方便快捷。

2、maven对每个构建阶段进行规范,非常有利于大型团队协作开发。

         一步构建,依赖管理,maven跨平台(基于java开发),提高开发效率

 

Maven项目工程目录约定

使用maven创建的工程我们称它为maven工程,maven工程具有一定的目录规范,如下:

Java项目显示下:

maven的简单使用_xml

Project

  |-src

  |   |-main

  |   |  |-java       ——存放项目的.java文件

  |   |  |-resources  ——存放项目资源文件,如spring, hibernate配置文件

         |-webapp    —— webapp目录是web工程的主目录

            |-WEB-INF

              |-web.xml

  |   |-test

  |      |-java       ——存放所有测试.java文件,如JUnit测试类

  |      |-resources  ——测试资源文件

  |-target            ——目标文件输出位置例如.class、.jar、.war文件

  |-pom.xml          ——maven项目核心配置文件

将本地jar包安装到仓库:

将jar包直接放到仓库文件夹下是不能使用的

在命令行中执行命令:

 

依赖范围

  • compile:编译范围,指A在编译时依赖B,此范围为默认依赖范围。编译范围的依赖会用在编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。

 

  • provided:provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用, provided依赖在编译和测试时需要,在运行时不需要,比如:servlet-api , jsp-api被tomcat容器提供。

 

  • runtime:runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc的驱动包。由于运行时需要所以runtime范围的依赖会被打包。

 

  • test:test范围依赖在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用,比如:junit。由于运行时不需要所以test范围依赖不会被打包。

   

system:system范围依赖与provided类似,但是你必须显式的提供一个对于本地系统中JAR文件的路径,需要指定systemPath磁盘路径,system依赖不推荐使

在maven-web工程中测试各各scop。

索引:

<dependencies>  
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>

 

 

 

Pom配置

Pom.xml 需要配置

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- tomcat组件可以不配 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<!-- 可以灵活配置工程路径 -->
<path>/crm</path>
<!-- 可以灵活配置端口号 -->
<port>8080</port>
</configuration>
</plugin>
</plugins>
</build>

 

maven命令

​​maven命令​​

将项目发布到私服:在要发送的工程中执行:mvn deploy -DrepositoryId=releases

方法二:在eclipse中运行:clean install deploy

 

maven无法下载jar问题解决时可以在pom.xml 中添加:

<repositories>  
<repository>
<id>public</id>
<name>aliyun nexus</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>aliyun nexus</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>

maven 引入本地包:

​​Maven引入本地依赖Jar到可执行Jar包中​​

在Maven中,默认地,是不会将依赖的Jar包打入可执行Jar包的,如果需要将依赖打入可执行Jar包,需要在​​pom​​​中添加​​maven-assembly-plugin​​​插件,这个很容易实现,但是在正规开发中不推荐这样使用,为什么?因为稍微大型一些的项目都至少有几十个依赖项,而每次打包都将这些Jar包打入可执行Jar,使得最后生成的可执行Jar体积非常大。标准的做法是,将所有的依赖Jar包都打入lib目录中,而在可执行Jar的​​MANIFEST.MF​​​中指定lib路径即可。这也很容易实现,并不是本文的重点,本文的重点是如何将不在Maven中央仓库中的Jar包,或者说依赖本地的Jar包打入可执行Jar,并更新​​MANIFEST.MF​​文件。

例如在我的Maven项目中,需要依赖本地Jar,首先将依赖的Jar复制到​​src/main/resources/lib​​目录下,引用如下

<dependency>
<groupId>com.yuewen</groupId>
<artifactId>lucene</artifactId>
<version>1.0.0-SNAPSHORT</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/lucene-1.0.0-SNAPSHORT.jar</systemPath>
</dependency>

​​Maven 实现多环境打包​​

在pom.xml中添加profile配置:

<!-- 环境 -->
<profiles>
<!-- 开发 -->
<profile>
<id>dev</id>
<activation>
<!--默认激活配置-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!--当前环境-->
<profile.name>dev</profile.name>
<!--这个属性是自定义的-->
<profile.baseUrl>http://192.168.1.58:6652</profile.baseUrl>
</properties>
</profile>
<!-- 测试 -->
<profile>
<id>test</id>
<properties>
<!--当前环境-->
<profile.name>test</profile.name>
<profile.baseUrl>http://cloud.xxxx.com/rainbow</profile.baseUrl>
</properties>
</profile>
<!-- 生产 -->
<profile>
<id>prd</id>
<properties>
<!--当前环境,生产环境为空-->
<profile.name>prd</profile.name>
<profile.baseUrl>http://api.xxx.cn/rainbow</profile.baseUrl>
</properties>
</profile>
</profiles>


标签:Maven,依赖,java,简单,Jar,maven,编译,使用
From: https://blog.51cto.com/u_10176086/5951822

相关文章

  • spring boot 环境下使用logback
    一、logback的介绍    Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback-classic和logback-access。logback-core是其......
  • Centos7搭建maven私服nexus3
    安装难度: ★☆☆☆☆繁琐程度:★☆☆☆☆易错程度:★☆☆☆☆一准备二安装下载安装包:方式一:nexus: ​​https://www.sonatype.com/download-oss-sonatype​​方式二:......
  • Jenkins使用笔记
    jenkins搭建部署分为三个步骤;第一步,jenkins安装第二步,插件安装和配置第三步,PushSSH第四步,部署项目准备环境:​​JDK:1.8:安装​​maven3.5‘安装Jenkins:2.83Centos:7.......
  • QComboBox的使用
    fromComboBox=QComboBox()添加一个comboboxfromComboBox.addItem(rates)添加一个下拉选项fromComboBox.addItems(["%dyears"%xforxinrange(2,26)])从序......
  • GitLab的安装、配置、使用
    前言上周去参与“中国数字经济创新发展大会”了,然后又忙新项目的事情,博客又有一段时间没有更新,今天周一事情比较少,立刻开始写文,最近有挺多值得记录的东西~进入正文,最近......
  • springboot项目打包报错:Type org.springframework.boot.maven.RepackageMojo not pres
    折磨了好久的一个问题,换过spring-boot-maven-plugin版本,但不见效。今天参考这篇文章:springboot打包RepackageMojonotpresent,版本改成2.6.2,不行。就想,可能是我用的idea......
  • idea配置maven私服无效,无法加载私服仓库
    问题描述:​ 从阿里云配置maven镜像后私服失效解决方案:<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://mave......
  • (六)Jquery Mobile主题及插件的使用
    二、自定义主题   根据js自带的主题,提取出来进行更改​​来自为知笔记(Wiz)​​作者:少帅......
  • 使用C语言编写一个简易审计插件
    使用C语言编写扩展PostgreSQL是一个强大的开源关系型数据库管理系统。它使用额外的特性以扩展SQL语言。一个DBMS(数据库管理系统)并不仅仅由它的性能和开箱即用的特性所决......
  • client,server,nginx 在使用keepAlive 专题
    2.TCPkeepaliveoverviewInordertounderstandwhatTCPkeepalive(whichwewilljustcallkeepalive)does,youneeddonothingmorethanreadthename:keepT......