明天的明天 永远的永远 未知的一切 我与你一起承担 ??

是非成败转头空 青山依旧在 几度夕阳红 。。。
  博客园  :: 首页  :: 管理

maven 命令

Posted on 2023-09-06 10:39  且行且思  阅读(62)  评论(0编辑  收藏  举报

命令列表

 

命令参数

-D 传入属性参数

比如命令:

mvn package -Dmaven.test.skip=true

以“-D”开头,将“maven.test.skip”的值设为“true”,就是告诉maven打包的时候跳过单元测试。同理,“mvn deploy-Dmaven.test.skip=true”代表部署项目并跳过单元测试。

 

-P 使用指定的Profile配置
    
比如项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境
profiles定义了各个环境的变量id,filters中定义了变量配置文件的地址,其中地址中的环境变量就是上面profile中定义的值,resources中是定义哪些目录下的文件会被配置文件中定义的变量替换。

通过maven可以实现按不同环境进行打包部署,命令为: 

mvn package -P dev

其中“dev“为环境的变量id,代表使用Id为“dev”的profile。

 

-e 显示maven运行出错的信息

-o 离线执行命令,即不去远程仓库更新包

-X 显示maven允许的debug信息

-U 强制去远程更新snapshot的插件或依赖,默认每天只更新一次

 

使用 .m2/settings.xml 进行deploy
mvn clean deploy -s .m2/settings.xml 

 

更多参数使用 --help 命令查看

 

maven命令package、install、deploy的区别

mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
mvn clean deploy依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。

package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
install命令完成了项目编译、单元测试、打包功能,把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
deploy命令完成了项目编译、单元测试、打包功能,把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,同时部署到远程maven私服仓库


当我们运行install的时候,Maven实际上是将项目生成的构件安装到了本地仓库,即只有install了之后其它项目才能使用此项目生成的构件

 

关于 -D

mvn package -Dmaven.test.skip=true

使用maven使用package打包的时候有时候会出现如下错误:

There are test failures.
Please refer to XXX/target/surefire-reports for the individual test results
 

 

表示测试失败导致的打包失败,解决方法就是跳过test打包。

-Djavacpp.platform=linux-x86_64

设置javacpp.platform属性

当使用mvn -Djavacpp.platform=linux-x86_64构建时,您将只得到特定的平台/依赖,而没有其他平台/依赖。这也适用于所有其他可传递的依赖项,例如opencv

您可以尝试运行mvn -Djavacpp.platform=linux-x86_64 dependency:tree验证它是否有效

命令行形式(万能)

 

命令1:mvn package -Dmaven.test.skip=true

命令2:mvn package -DskipTests

命令3:mvn package -Dmaven.test.failure.ignore=true

 

命令1:不执行测试用例,也不会编译测试用例
命令2:不执行测试用例,会编译测试用例(如果编译也报错那么么就使用命令1)
命令3:忽略test的错误就算是失败了也继续构建

 

配置pom文件的形式

配置pom文件的形式

方法1:相当于命令3
 <plugins>
     <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
         <configuration>
             <testFailureIgnore>true</testFailureIgnore>
         </configuration>
     </plugin>
 </plugins>

方法2:相当于命令2
<plugins>
     <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
         <configuration>
             <skipTests>true</skipTests>
         </configuration>
     </plugin>
 </plugins>

 

配置SpringBoot的形式

方法1:不会编译测试类,同命令1
<properties>
   <maven.test.skip>true</maven.test.skip>
</properties>

方法2:会编译测试类,同命令2
<properties>
    <skipTests>true</skipTests>
</properties>

 

利用idea的形式

点击这个闪电标志,然后发现test被划掉了,再点击packge就可以了

 

mvn deploy 到不同的环境

准备

修改apache-maven-3.3.9\conf\settings.xml 在profiles标签中,添加如下profile

<!-- 开发环境 (snapshots环境) --></span>  
<profile>  
    <id>mydev</id>  
    <properties>  
        <repository.id>mydev</repository.id>  
        <repository.name>myDev Repository</repository.name>  
        <repository.url>http://admin:123456@192.168.1.101/content/repositories/snapshots/</repository.url>  
    </properties>  
</profile>  
  
<!-- 正式环境(releases环境) --></span>  
<profile>  
    <id>production</id>  
    <properties>  
        <repository.id>production</repository.id>  
        <repository.name>Production Repository</repository.name>  
        <repository.url>http://admin:123456@192.168.1.101/content/repositories/releases/</repository.url>  
    </properties>  
</profile>  


<!-- 默认启用mydev环境 -->  
<activeProfiles>  
    <activeProfile>mydev</activeProfile>  
</activeProfiles>  

 

在项目的pom.xml里面添加

<distributionManagement>  
    <repository>  
        <id>${repository.id}</id>  
        <name>${repository.name}</name>  
        <url>${repository.url}</url>  
        <layout>default</layout>  
    </repository>  
</distributionManagement>  

 

使用

mvn clean deploy -Pproduction 表示deploy到正式环境
mvn clean deploy 或者 mvn clean deploy -Pdev 表示deploy到开发环境

 

注意

改了一个模块的内容,引用它的其他模块 更新不到最新的内容,使用更改的模块的最新内容,比如新加的类 爆红

 

package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

install命令完成了项目编译、单元测试、打包功能,把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
deploy命令完成了项目编译、单元测试、打包功能,把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,同时部署到远程maven私服仓库

 

1 先 mvn package 打包,再 mvn install 把打好的包放到本地仓库其他模块就能引用到了
2 mvn deploy 上传到远程仓库,同时把远程的最新依赖拉到本地仓库了

上传到mvn远程仓库
同时 package 到 registry 地址
使用自定义的 .m2 文件夹中的 settings.xml 配置文件
同时把执行的命令写入到 mvn.log 文件中

mvn clean deploy -Pregistry -DskipTests -U --settings .m2/settings.xml | tee mvn.log

 

工作中

打包部署自测
mvn clean package -DskipTests -Pregistry

mvn clean package -DskipTests -Pregistry -Djavacpp.platform=linux-x86_64

 

 

Maven deploy配置方法详解

在Maven项目中,使用deploy命令可以将项目打包并发布到Maven仓库中。下面详细介绍Maven deploy的配置方法。

1. 配置POM文件

在Maven项目的pom.xml文件中,需要配置Maven的distributionManagement节点。该节点的repository子节点配置发布到的Maven仓库的地址,snapshotRepository子节点配置发布到的快照版本的Maven仓库地址。下面是一个示例:

<distributionManagement>
    <repository>
        <id>my-repo</id>
        <url>https://example.com/maven-repo/releases</url>
    </repository>
    <snapshotRepository>
        <id>my-repo</id>
        <url>https://example.com/maven-repo/snapshots</url>
    </snapshotRepository>
</distributionManagement>

 

2. 配置settings.xml文件

在Maven的settings.xml文件中,需要配置Maven仓库的登录信息。打开Maven安装目录下的conf/settings.xml文件,在其中添加<servers>节点,并在该节点内添加Maven仓库服务器的登录信息。下面是一个示例:

<servers>
    <server>
        <id>my-repo</id>
        <username>my-username</username>
        <password>my-password</password>
    </server>
</servers>

其中id节点的值需要和pom.xml文件中的distributionManagement节点中对应的id值相同。

 

3. 执行deploy命令

在Maven项目目录下运行以下命令即可将项目打包并发布到Maven仓库中:

mvn clean deploy

 

如果不希望执行测试用例可以使用以下命令:

mvn clean deploy -DskipTests