首页 > 其他分享 >MAVEN使用技巧

MAVEN使用技巧

时间:2023-04-23 11:24:23浏览次数:36  
标签:maven 技巧 settings jar MAVEN xx install 使用 mvn

maven

常用命令

mvn -v //查看版本 
mvn archetype:create //创建 Maven 项目 
mvn compile //编译源代码 
mvn test-compile //编译测试代码 
mvn test //运行应用程序中的单元测试 
mvn site //生成项目相关信息的网站 
mvn package //依据项目生成 jar 文件 
mvn install //在本地 Repository 中安装 jar 
mvn -Dmaven.test.skip=true //忽略测试文档编译 
mvn clean //清除目标目录中的生成结果 
mvn clean compile //将.java类编译为.class文件 
mvn clean package //进行打包 
mvn clean test //执行单元测试 
mvn clean deploy //部署到版本仓库 
mvn clean install //使其他项目使用这个jar,会安装到maven本地仓库中 
mvn archetype:generate //创建项目架构 
mvn dependency:list //查看已解析依赖 
mvn dependency:tree com.xx.xxx //看到依赖树 
mvn dependency:analyze //查看依赖的工具 
mvn help:system //从中央仓库下载文件至本地仓库 
mvn help:active-profiles //查看当前激活的profiles 
mvn help:all-profiles //查看所有profiles 
mvn help:effective -pom //查看完整的pom信息

#注意,执行maven命令需要当前目录有pom依赖文件

mvn clean install -Dmaven.test.skip=true --settings D:\project\PmallCLKA\code\CBG-iDeal2BP-PTCO\settings.xml

#安装第三方Jar到本地库中(用于在项目中方便引入)

mvn install:install-file -DgroupId=xxx.xx.xxxx -DartifactId=xxx -Dversion=0.0.1 -Dpackaging=jar -Dfile=本地路径(非maven仓库路径)/xxx-0.0.1.jar

#解决jar包冲突
当项目出现jar包冲突时,用命令mvn dependency:tree 查看依赖情况

mvn dependency:tree 查看依赖树,查看包结构间的依赖
mvn dependency:tree >d:/tmp 把结果输出到文件,

 

然后再pom.xml文件里排除掉冲突的jar包

#指定setting文件和本地仓库
注意:-Dmaven在powershell下需要添加单引号

mvn install -Dmaven.test.skip=true -Dmaven.repo.local=D:\maven\PMALLCLAKReps\ptco --settings D:\project\PmallCLKA\code\CBG-iDeal2BP-PTCO\settings.xml
mvn clean install -Dmaven.test.skip=true --settings D:\project\PmallCLKA\code\CBG-iDeal2BP-PTCO\settings.xml 

 

powershell中加''号

mvn install '-Dmaven.test.skip=true' '-Dmaven.repo.local=D:\maven\PMALLCLAKReps\ptco' --settings D:\project\PmallCLKA\code\CBG-iDeal2BP-PTCO\settings.xml

maven打包本地jar包的多种方式

1.引用不在本地仓库中的jar包

*首先在resources目录下创建lib目录,然后将本地jar包复制到lib目录下
*然后在我们项目的pom文件中使用如下方式引入该jar包

<dependency>
    <groupId>xx.xx.xx</groupId>
    <artifactId>xxxx</artifactId>
    <scope>system</scope>
    <systemPath>${basedir}/src/main/resources/lib/xxxx.jar</systemPath>
    <version>1.0.0</version>
</dependency>

 

*此时运行项目是可以找到jar包的,但是如果项目使用maven install成jar包后,运行是无法找到我们上面引入的本地jar的,因为maven编译时没有将本地引用的jar包一起打包,需要在pom中加一段配置

<build>    
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <!--maven编译时将本地引用的jar包一起打包-->
            <includeSystemScope>true</includeSystemScope>
        </configuration>
    </plugin>
</build> 

 

*重新编译即可解决问题

2.用Maven将jar包添加到本地仓库,然后直接通过pom文件调用

*添加到本地仓库(settings文件配置),并指定jar包在maven仓库的groupId,artifactId,version等信息

mvn install:install-file "-Dfile=jar包路径/xxxx.jar" "-DgroupId=xx.xx" "-DartifactId=xxxx" "-Dversion=1.0.0" "-Dpackaging=jar"

 

*项目中可直接引用

<dependency>
    <groupId>xx.xx</groupId>
    <artifactId>xxx</artifactId>
    <version>1.0.0</version>
</dependency>

其他技巧:

1.排除依赖

 <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-context</artifactId>
     <version>5.1.9.RELEASE</version>
     <exclusions>
         <exclusion>
             <groupId>org.springframework</groupId>
             <artifactId>spring-core</artifactId>
         </exclusion>
     </exclusions>
 </dependency>

2.maven编译后将项目中用到的jar包拷贝到target某文件夹下

<build>
    <!--拷贝依赖到jar外面的lib目录-->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
            <execution>
                <id>copy-lib</id>
                <phase>package</phase>
                <goals>
                    <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                    <outputDirectory>target/lib</outputDirectory>
                    <excludeTransitive>false</excludeTransitive>
                    <stripVersion>false</stripVersion>
                    <includeScope>runtime</includeScope>
                </configuration>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
            <archive>
                <!-- 生成的jar中,不要包含pom.xml和pom.properties这两个文件 -->
                <addMavenDescriptor>false</addMavenDescriptor>
                <manifest>
                    <!-- 是否要把第三方jar加入到类构建路径 -->
                    <addClasspath>true</addClasspath>
                    <!-- 外部依赖jar包的最终位置 -->
                    <classpathPrefix>lib/</classpathPrefix>
                    <!-- 项目启动类 -->
                    <mainClass>com.saas.reptile.ReptileApplicatio</mainClass>
                </manifest>
            </archive>
        </configuration>
    </plugin>
</build>

 

标签:maven,技巧,settings,jar,MAVEN,xx,install,使用,mvn
From: https://www.cnblogs.com/snad/p/17345936.html

相关文章

  • 日志门面、实现框架和桥接器及实际使用
      之前总是在项目中使用现成的日志框架,用着方便就不会去思考它的框架、发展和组成,别人怎么用我也怎么用。感觉就是很模糊不清楚,说不知道也知道点,说知道又讲不明白,看了不少文章,决定把这一块梳理一下。1、现有日志的组成  可能说到日志,大家都知道一部分,什么slf4j、logback等等......
  • maven入门教程
    1.1. Maven简介Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven除了以程序构建能力为特色之外,还提供高级项目管理工具。由于Maven的缺省构建规则有较高的可重用性,所以常常用两三行Maven构建脚本就可以构建简单的项......
  • java使用数组实现队列
    1.1. 队列的数据结构队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。1.2. Java实现QueueTestpackagech04;publicclassQ......
  • bootstrap日期插件datetimepicker的简单使用
    <!DOCTYPEHTML><html><head><linkhref="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css"rel="stylesheet"><linkrel="stylesheet"type="text/cs......
  • sdl2基本使用
    #include<SDL.h>intmain(intargc,char*args[]){  //初始化SDL  if(SDL_Init(SDL_INIT_VIDEO)<0)  {    printf("SDL初始化失败,错误信息:%s\n",SDL_GetError());    return-1;  }  //创建窗口  SDL_Window*window=SDL_Crea......
  • Java使用maven-invoker插件进行maven相关操作
    官方文档地址:https://maven.apache.org/shared/maven-invoker/index.htmlApacheMavenInvoker在许多情况下,工具(包括Maven本身)可能希望在干净的环境中启动Maven构建。为什么呢?也许您希望避免Maven插件产生的副作用污染当前系统环境。也许您想从与当前${user.dir}不同的工作目......
  • 使用SIMCOM的SIM8260C-M2 5G通讯模组与本机网络调试助手通讯
    偶然间得到了一块SIMCOM的底板,上方的模组是SIM8260C-M25G通讯模组,在同事的指导之下,实现了通过5G模组发访问本机网络调试助手的功能。步骤如下: ①、首先是根据官方文档,安装相关驱动; 网址链接:驱动安装②、驱动成功安装后,将底板连接上电脑,在设备管理器中能看到如下驱动; ③......
  • Spring缓存注解的使用与源码分析
    SpringCache提供了一个对缓存使用的抽象,以及大量的实现方便开发者使用。SpringCache主要提供了如下注解:注解说明@Cacheable根据方法的请求参数对其结果进行缓存@CachePut根据方法的请求参数对其结果进行缓存,和@Cacheable不同的是,它每次都会触发真实方法的调用@CacheEvict根据一定......
  • 13款监测工具使用
    Linux运维必备的13款实用工具,你都用过吗?运维网工 2023-04-2209:00 发表于重庆收录于合集#Linux运维工具2个#运维工程师119个#网络运维77个#运维工具78个#运维管理66个本文介绍几款Linux运维比较实用的工具,希望对Linux管理员有所帮助。1、查看进程占用......
  • JTS空间坐标Geometry使用
    Geomtery子类图创建GeometryGeometryFactorygeometryFactory=JTSFactoryFinder.getGeometryFactory();//点Coordinatecoord=newCoordinate(1,1);Pointpoint=geometryFactory.createPoint(coord);//线Coordinate[]coordinates=newCoordinate[]{newC......