100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 在 命令行 (cmd)执行 Maven命令 对java工程进行打包 操作 (指定settings.xml)

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

时间:2020-07-17 19:26:58

相关推荐

在 命令行 (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.jarmyclassPackage文件夹 即可打包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 中安装 jarmvn -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 //查看当前激活的profilesmvn help:all-profiles //查看所有profilesmvn 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 /FC:.| 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博客

---

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。