在 命令行 (cmd)执行 Maven命令,对java工程进行打包 操作 (指定settings.xml)
目录
■前提理解
■扩展
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)相关推荐
- java调用cmd执行maven命令
java调用cmd执行maven命令 一.原理介绍 Java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令. cmd /c dir 是执行完dir命 ...
- Windows命令行cmd之cd命令用法
简介 cd 即 Change Directory,切换路径,可以通过在后面添加接驱动器符号.完整路径和相对路径来实现路径的转换. 命令行工具:Windows+R打开运行窗口,输入cmd,进入命令行工具 ...
- java arguments_命令行中执行带参数的java程序(Command-Line Arguments)
在cmd中运行java程序,可以在class名之后输入参数.Eclipse中可点击run configuration,在argument窗口中指定参数.--现学现卖 代码如下: //by panden ...
- IDEA如何执行maven命令进行打包编译及常用命令
前提条件:maven配置环境变量. 在保证环境变量配置没问题的情况下执行过程出现mvn不是内部命令类似的错误,建议重启编译器或者命令窗口. 执行maven命令,方式一: 在IDEA主界面左下角找到 ...
- 打成jar包 在命令行下执行java工程
将java工程打成jar包,但第三方jar包并没有包含在包中,当在命令行中运行jar包时,出现类找不到的异常, 在网上看到解决办法是将第三方jar包放到JDK的扩展类文件夹中(%JAVA_HOME%/ ...
- cmd 命令行方式执行 matlab 脚本
0. matlab 命令行 删除当前输入的行 ctrl + u 或者 esc 1. 命令行执行脚本 首先设置环境变量,将 matlab.exe 添加到环境变量 Path 中,比如我的 matlab 2 ...
- python执行cmd命令行异步执行_Python 异步调用命令行工具
当你在自己的 Python 程序中采用了基于事件循环的异步编程方法之后,你就会发现自己不自觉地被其牢牢吸引住,并不是说这一方法多么棒,而是因为你不得不想办法保证程序中的任意环节都不能是阻塞的! 例如当 ...
- 关于在cmd命令行中执行 scrapy crawl demo 出现错误
在cmd中执行 scrapy crawl demo 时报了异常. 错误信息:原因: 1.没有安装winapi32接口 winapi32解释:winapi32 2.生成的demo文件不在spiders文 ...
- mysql 执行cmd,mysql命令行中执行sql的几种方式总结
1.直接输入sql执行 MySQL> select now(); +---------------------+ | now() | +---------------------+ | 2013 ...
最新文章
- 019_html超链接
- php和android选择器,Android_android 字体颜色选择器(ColorPicker)介绍,primary_text_yellow.xml 复制代码 代 - phpStudy...
- mask rcnn算法原理图_基于MASK RCNN算法实现瑕疵图像识别(训练模型及应用)
- vs2013下oracle proc配置
- 剑指offer 最小的k个数
- 工作环境总结(1)开发环境搭建
- 【转】Asp.net的生命周期应用之IHttpModule和IHttpHandler
- 实现WM下删除最后一条匹配的通话记录
- Linux Shell通过fifo实现多进程并发以及并发数控制
- Linux内核开发人员考虑剔除对更多老旧平台的处理器支持
- 华为云空间联系人是不是机主_华为Mate 30系列国内发布 超强隐私安全保护放大招...
- iPhone 13或将配备更大容量电池 售价与iPhone 12基本相当
- Spring学习4-面向切面(AOP)之Spring接口方式
- 通过Console口本地加载系统程序
- CSS3 transform-style 属性
- Boost Asio快速入门
- 使用css画出一条虚线
- STM32——滴答定时器设置1us问题
- 小程序用户协议页面实现
- MAC 解压 rar 文件
热门文章
- 在VCU平台插上CCS充电翅膀
- 懒人日报 | “净网2019”北京市公安局针对区块链服务等开展专项监督检查、英国或将就Libra用户隐私安全问题举行听证会......
- 专家:互联网金融与传统银行并非竞争关系
- KiCad设计PCB-40-PCB中添加开窗的logo、丝印层添加英文和中文注释
- PHP开发的简洁的导航网站源码多种主题风格切换
- 立足信创国产化运维,打造安全可控IT运维管理系统
- javascript点滴积累
- 嵌入式硬件入门——LED数码管(工作原理+静态驱动)
- 4.Numpy 运算函数(均值mean()/中位数median()/cumsum()累加函数/累差运算函数diff()/nonzero()/排序操作sort()/clip()函数)
- 计算机操作系统(第3版)汤子瀛 下载链接