目录

■前提理解

■扩展

1.使用纯命令行,java命令进行打包

2.pom.properties

3.在Eclipse中,【実行構成】创建文件(.launch),保存每次执行的Maven命令。

■命令行执行的前提条件

■maven的目录结构(略)

■settings.xml文件

■命令行执行   ---  重点 !!! 很常用 !!!

关于 maven-surefire-plugin

■环境差异文件做成

■mvn命令的,更多参数设置

■.更多命令组合 clean package install

■使用到的插件

■其他

●生成的文件

●注意点:maven运行时

●注意点 :mvn的命令语法

●Devops 相关

●Scope :provided

●如何指定pom文件

●maven的目录结构

■setting.xml配置文件 --- user.home


■前提理解

===

・Maven的Pom文件

・Eclipse中创建Maven工程,

・Eclipse中、使用注意点

・Eclipse中创建Maven工程

Maven的Pom文件 ( Eclipse中创建Maven工程, 使用注意点,DevOps相关)_sun0322-CSDN博客

・DevOps相关

DevOps使用到的工具・术语_sun0322-CSDN博客

・Maven 帮助文档

Maven的帮助文档ー查看各个插件的作用--- 【maven-assembly-plugin】_sun0322-CSDN博客_assembly 插件作用

===

■扩展

=====================

1.使用纯命令行,java命令进行打包

java使用纯命令行打包项目 - bf378 - 博客园

1.1.javac -d   // 指定,编译之后的class文件的,输出目录

   javac -d myclassPackage @sources.txt

1.2.创建jar包可以使用jar -cvf jarname.jar myclassPackage文件夹 即可打包1

   sources.txt  

   对于多个包下面的源码编译,貌似javac不支持迭代编译,可能需要一次传入多个源码位置进行编译。

使用java的java 命令,直接调用执行class文件_sun0322-CSDN博客_java 执行class

2.pom.properties

Maven中的pom.properties文件_sun0322-CSDN博客_pom文件properties

3.在Eclipse中,【実行構成】创建文件(.launch),保存每次执行的Maven命令。

文件后缀【XXXX.launch】

(目录所在【工程文件夹】---【.settings】---XXXX.launch)

=====================

■命令行执行的前提条件

・Maven工程(有pom文件)

・JDK安装 

对应的bin,设置到环境变量path中

・Maven安装

对应的bin,设置到环境变量path中

・镜像库已经设置好(repository)

・对应的setting.xml已经设置好(镜像库对应的文件)

■maven的目录结构(略)

%MAVEN_HOME%

└bin

└mvn.cmd

└conf

 └settings.xml //镜像库等情报

↑ 命令行执行时,如果不指定,默认使用此配置文件

■settings.xml文件

快速搭建开发环境(Vs Code)_sun0322-CSDN博客

■命令行执行   ---  重点 !!! 很常用 !!!

0.如果不在环境变量path中设置,

也可以在命令行窗口打开之前设置 set path=%JAVA_HOME%\bin;%MAVEN_HOME%bin;%path%

1.   cd C:\XXX\工程目录下

pom文件一般都在工程目录下面

2.运行下面命令 指定settings.xml

mvn clean package --settings c:\dev\.m2\setttings.xml

跳过测试

set path=c:\java\bin;c:\maven\bin;%path%mvn clean package -Dmaven.test.skip=true --settings c:\dev\.m2\setttings.xml -P profileId

// -Dmaven.test.skip=true

// 对应的插件 【maven-surefire-plugin】 不被执行

// <profiles><profile><id>IT001</id><properties>...</properties></porfile>......</profiles>

关于 maven-surefire-plugin

--------------------------------------------

在默认情况下,maven-surefire-plugin的test目标会自动执行测试源码路径(默认为src/test/java/)下所有符合一组命名模式的测试类。这组模式为:

**/Test*.java:任何子目录所有命名以Test开头的Java类。
**/*Test.java:任何子目录下所有命名以Test结尾的Java类。
**/*TestCase.java:任何子目录下所有命名以TestCase结尾的Java类。

​​​​​​​--------------------------------------------

■环境差异文件做成

=========================================================

・略

   <build><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources><plugins>...</plugins></build>

・複雑

   <build><resources><resource><directory>src/main/resources</directory><includes><include>**/*</include></includes><filtering>false</filtering><targetPath>${basedir}/target/classes</targetPath></resource><resource><directory>src/main/resources</directory><includes><include>XXX.properties</include></includes><filtering>true</filtering><targetPath>${basedir}/target/classes</targetPath></resource><resource><directory>src/main/resources/AAA/BBB/</directory><includes><include>XXX.jsp</include></includes><filtering>true</filtering><targetPath>${basedir}/target/classes/AAA/BBB/</targetPath></resource></resources><plugins>...</plugins></build>

mvn clean package依次执行了clean、resources、compile、

Maven中profile和filtering实现多个环境下的属性过滤_极客on之路-CSDN博客

Spring boot 相关

xml文件中无法获取pom.xml文件中的属性_seriousboy的博客-CSDN博客

由于 ${} 方式会被maven处理。
如果你的pom继承了spring-boot-starter-parent,
SpringBoot会将maven-resources-plugins默认的${}方式改为了@@方式,
如@name@,此时若要使用${}取值则需在pom.xml文件中添加如下配置:

===

// 方式一
<build><pluginManagement><plugins><plugin><artifactId>maven-resources-plugin</artifactId><configuration><encoding>utf-8</encoding><useDefaultDelimiters>true</useDefaultDelimiters></configuration></plugin></plugins></pluginManagement>
</build>// 方式二<configuration><delimiters><delimiter>@</delimiter></delimiters><useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
// 将<useDefaultDelimiters>false</useDefaultDelimiters>改为<useDefaultDelimiters>true</useDefaultDelimiters>

=========================================================

■mvn命令的,更多参数设置

mvn -help 查看

-f 指定 pom.xml文件位置

-B Batch-mode; // 可以避免等待人工参数入力,造成的挂起现象

-s, --settings

■.更多命令组合 clean package install

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命令完成了项目编译、单元测试、打包功能install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

■使用到的插件

执行顺序:1、使用清理插件:maven-clean-plugin:执行清理删除已有target目录;2、使用资源插件:maven-resources-plugin:执行资源文件的处理;3、使用编译插件:maven-compiler-plugin:编译所有源文件生成class文件至target\classes目录下;4、使用资源插件:maven-resources-plugin:执行测试资源文件的处理;5、使用编译插件:maven-compiler-plugin:编译测试目录下的所有源代码;6、使用插件:maven-surefire-plugin:运行测试用例;在targer目录下面,会生成surefire-reports文件夹,当然,前提是不跳过Junit的执行surefire-reports└TEST-*.xml // 测试结果文件7、使用插件:maven-jar-plugin:对编译后生成的文件进行打包,包名称默认为:artifactId-version.jar,包文件保存在target目录下■更多插件
7.1.maven-jar-plugin,默认的打包插件,用来打普通的project JAR包;
7.2.maven-shade-plugin,用来打可执行JAR包,也就是所谓的fat JAR包;
7.3.maven-assembly-plugin,支持自定义的打包结构,也可以定制依赖项等。// 使用  maven-assembly-plugin 可以生成zip文件

■maven-assembly-plugin

<executions><execution><configuration><fileName>delply</fileName><descriptor>xxxx.xml</descriptor></configuration></execution>
</executions>

■maven-assembly-plugin 相关的更多介绍

Maven的帮助文档ー查看各个插件的作用--- 【maven-assembly-plugin】_sun0322-CSDN博客_assembly 插件作用

===

mvn -v //查看版本
mvn -version //查看版本
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 //看到依赖树
mvn dependency:analyze //查看依赖的工具
mvn help:system //从中央仓库下载文件至本地仓库
mvn help:active-profiles //查看当前激活的profiles
mvn help:all-profiles //查看所有profiles
mvn help:effective -pom //查看完整的pom信息

■其他

●生成的文件

生成的文件保存在下面的位置

C:\XXX\工程目录下

└target

●注意点:maven运行时

每次clean执行时,会直接把target文件夹删除掉,

然后再新建一个target文件夹,

执行打包命令时,不要打开target文件夹,

不然会出错,说创建target文件失败。

●注意点 :mvn的命令语法

mvn clean package

没有 「-」,错误写法 mvn -clean

●Devops 相关

DevOps使用到的工具・术语_sun0322-CSDN博客

●Scope :provided

Maven Dependency Scope用法-provided

Maven Dependency Scope用法 - ergexy - 博客园

pom文件中,引用jar时的,scope

        <dependency>  <groupId>javax.servlet</groupId>  <artifactId>servlet-api</artifactId>  <version>2.5</version>  <scope>provided</scope>  </dependency>  
・compile
默认的scope,
表示 dependency 都可以在生命周期中使用。
会打入到jar包里面的lib中・provided
只在编译时使用,
不会将包打入本项目中。・runtime
表示dependency不作用在编译时,但会作用在运行和测试时

===

关于Maven scope 为provided时,依赖的jar包依然被打入了项目的lib中_SuperForceQiang的博客-CSDN博客_配置了provided仍然能打进包内

・compile:默认值。compile表示对应依赖会参与当前项目的编译、测试、运行等,是一个比较强的依赖。打包时通常会包含该依赖,部署时会打包到lib目录下。比如:spring-core这些核心的jar包。

・provided:provided适合在编译和测试的环境,和compile功能相似,但provide仅在编译和测试阶段生效,provide不会被打包,也不具有传递性。比如:上面讲到的spring-boot-devtools、servlet-api等,前者是因为不需要在生产中热部署,后者是因为容器已经提供,不需要重复引入。

・runtime:仅仅适用于运行和测试环节,在编译环境下不会被使用。比如编译时只需要JDBC API的jar,而只有运行时才需要JDBC驱动实现。

・test:scope为test表示依赖项目仅参与测试环节,在编译、运行、打包时不会使用。最常见的使用就是单元测试类了。

・system:system范围依赖与provided类似,不过依赖项不会从maven仓库获取,而需要从本地文件系统提供。使用时,一定要配合systemPath属性。不推荐使用,尽量从Maven库中引用依赖。

・import: import scope只能用在dependencyManagement里面。表示从其它的pom中导入dependency的配置

===

●如何指定pom文件

mvn -f profect1/pom.xml

●maven的目录结构

apache的项目

PS C:\Program Files\apache-maven-3.6.3> tree /A /F
C:.
|   LICENSE
|   NOTICE
|   README.txt
|
+---bin
|       m2.conf
|       mvn
|       mvn.cmd
|       mvnDebug
|       mvnDebug.cmd
|       mvnyjp
|
+---boot
|       plexus-classworlds-2.6.0.jar
|       plexus-classworlds.license
|
+---conf
|   |   settings.xml
|   |   toolchains.xml
|   |
|   \---logging
|           simplelogger.properties
|
\---lib|   cdi-api-1.0.jar|   cdi-api.license|   commons-cli-1.4.jar|   commons-cli.license|   commons-io-2.5.jar|   commons-io.license|   commons-lang3-3.8.1.jar|   commons-lang3.license|   guava-25.1-android.jar|   guava.license|   guice-4.2.1-no_aop.jar|   guice.license|   jansi-1.17.1.jar|   jansi.license|   javax.inject-1.jar|   javax.inject.license|   jcl-over-slf4j-1.7.29.jar|   jcl-over-slf4j.license|   jsoup-1.12.1.jar|   jsoup.license|   jsr250-api-1.0.jar|   jsr250-api.license|   maven-artifact-3.6.3.jar|   maven-builder-support-3.6.3.jar|   maven-compat-3.6.3.jar|   maven-core-3.6.3.jar|   maven-embedder-3.6.3.jar|   maven-model-3.6.3.jar|   maven-model-builder-3.6.3.jar|   maven-plugin-api-3.6.3.jar|   maven-repository-metadata-3.6.3.jar|   maven-resolver-api-1.4.1.jar|   maven-resolver-connector-basic-1.4.1.jar|   maven-resolver-impl-1.4.1.jar|   maven-resolver-provider-3.6.3.jar|   maven-resolver-spi-1.4.1.jar|   maven-resolver-transport-wagon-1.4.1.jar|   maven-resolver-util-1.4.1.jar|   maven-settings-3.6.3.jar|   maven-settings-builder-3.6.3.jar|   maven-shared-utils-3.2.1.jar|   maven-slf4j-provider-3.6.3.jar|   org.eclipse.sisu.inject-0.3.4.jar|   org.eclipse.sisu.inject.license|   org.eclipse.sisu.plexus-0.3.4.jar|   org.eclipse.sisu.plexus.license|   plexus-cipher-1.7.jar|   plexus-cipher.license|   plexus-component-annotations-2.1.0.jar|   plexus-component-annotations.license|   plexus-interpolation-1.25.jar|   plexus-interpolation.license|   plexus-sec-dispatcher-1.4.jar|   plexus-sec-dispatcher.license|   plexus-utils-3.2.1.jar|   plexus-utils.license|   slf4j-api-1.7.29.jar|   slf4j-api.license|   wagon-file-3.3.4.jar|   wagon-http-3.3.4-shaded.jar|   wagon-provider-api-3.3.4.jar|+---ext|       README.txt|\---jansi-native|   README.txt|+---freebsd32|       libjansi.so|+---freebsd64|       libjansi.so|+---linux32|       libjansi.so|+---linux64|       libjansi.so|+---osx|       libjansi.jnilib|+---windows32|       jansi.dll|\---windows64jansi.dll

---

■setting.xml配置文件 --- user.home

maven的配置文件settings.xml存在于两个地方:

1.安装的地方:${M2_HOME}/conf/settings.xml

2.用户的目录:${user.home}/.m2/settings.xml

mvn -Duser.home=/XXX/XXXX/AAA/mvn// 这时,使用【/XXX/XXXX/AAA/mvn/.m2/】目录下的 setting.xml 文件

前者又被叫做全局配置,对操作系统的所有使用者生效;

后者被称为用户配置,只对当前操作系统的使用者生效。

如果两者都存在,它们的内容将被合并,并且用户范围的settings.xml会覆盖全局的settings.xml。

---

↓搜索【user.home】

工作中使用到的单词(软件开发)_sun0322-CSDN博客

---

在 命令行 (cmd)执行 Maven命令,对java工程进行打包 操作 (指定settings.xml)相关推荐

  1. java调用cmd执行maven命令

    java调用cmd执行maven命令 一.原理介绍 Java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令. cmd /c dir 是执行完dir命 ...

  2. Windows命令行cmd之cd命令用法

    简介 cd 即 Change Directory,切换路径,可以通过在后面添加接驱动器符号.完整路径和相对路径来实现路径的转换. 命令行工具:Windows+R打开运行窗口,输入cmd,进入命令行工具 ...

  3. java arguments_命令行中执行带参数的java程序(Command-Line Arguments)

    在cmd中运行java程序,可以在class名之后输入参数.Eclipse中可点击run configuration,在argument窗口中指定参数.--现学现卖 代码如下: //by panden ...

  4. IDEA如何执行maven命令进行打包编译及常用命令

    前提条件:maven配置环境变量. 在保证环境变量配置没问题的情况下执行过程出现mvn不是内部命令类似的错误,建议重启编译器或者命令窗口. 执行maven命令,方式一:  在IDEA主界面左下角找到 ...

  5. 打成jar包 在命令行下执行java工程

    将java工程打成jar包,但第三方jar包并没有包含在包中,当在命令行中运行jar包时,出现类找不到的异常, 在网上看到解决办法是将第三方jar包放到JDK的扩展类文件夹中(%JAVA_HOME%/ ...

  6. cmd 命令行方式执行 matlab 脚本

    0. matlab 命令行 删除当前输入的行 ctrl + u 或者 esc 1. 命令行执行脚本 首先设置环境变量,将 matlab.exe 添加到环境变量 Path 中,比如我的 matlab 2 ...

  7. python执行cmd命令行异步执行_Python 异步调用命令行工具

    当你在自己的 Python 程序中采用了基于事件循环的异步编程方法之后,你就会发现自己不自觉地被其牢牢吸引住,并不是说这一方法多么棒,而是因为你不得不想办法保证程序中的任意环节都不能是阻塞的! 例如当 ...

  8. 关于在cmd命令行中执行 scrapy crawl demo 出现错误

    在cmd中执行 scrapy crawl demo 时报了异常. 错误信息:原因: 1.没有安装winapi32接口 winapi32解释:winapi32 2.生成的demo文件不在spiders文 ...

  9. mysql 执行cmd,mysql命令行中执行sql的几种方式总结

    1.直接输入sql执行 MySQL> select now(); +---------------------+ | now() | +---------------------+ | 2013 ...

最新文章

  1. 019_html超链接
  2. php和android选择器,Android_android 字体颜色选择器(ColorPicker)介绍,primary_text_yellow.xml 复制代码 代 - phpStudy...
  3. mask rcnn算法原理图_基于MASK RCNN算法实现瑕疵图像识别(训练模型及应用)
  4. vs2013下oracle proc配置
  5. 剑指offer 最小的k个数
  6. 工作环境总结(1)开发环境搭建
  7. 【转】Asp.net的生命周期应用之IHttpModule和IHttpHandler
  8. 实现WM下删除最后一条匹配的通话记录
  9. Linux Shell通过fifo实现多进程并发以及并发数控制
  10. Linux内核开发人员考虑剔除对更多老旧平台的处理器支持
  11. 华为云空间联系人是不是机主_华为Mate 30系列国内发布 超强隐私安全保护放大招...
  12. iPhone 13或将配备更大容量电池 售价与iPhone 12基本相当
  13. Spring学习4-面向切面(AOP)之Spring接口方式
  14. 通过Console口本地加载系统程序
  15. CSS3 transform-style 属性
  16. Boost Asio快速入门
  17. 使用css画出一条虚线
  18. STM32——滴答定时器设置1us问题
  19. 小程序用户协议页面实现
  20. MAC 解压 rar 文件

热门文章

  1. 在VCU平台插上CCS充电翅膀
  2. 懒人日报 | “净网2019”北京市公安局针对区块链服务等开展专项监督检查、英国或将就Libra用户隐私安全问题举行听证会......
  3. 专家:互联网金融与传统银行并非竞争关系
  4. KiCad设计PCB-40-PCB中添加开窗的logo、丝印层添加英文和中文注释
  5. PHP开发的简洁的导航网站源码多种主题风格切换
  6. 立足信创国产化运维,打造安全可控IT运维管理系统
  7. javascript点滴积累
  8. 嵌入式硬件入门——LED数码管(工作原理+静态驱动)
  9. 4.Numpy 运算函数(均值mean()/中位数median()/cumsum()累加函数/累差运算函数diff()/nonzero()/排序操作sort()/clip()函数)
  10. 计算机操作系统(第3版)汤子瀛 下载链接