本文主要内容为:涉及maven的学习,maven的基本介绍,idea下的maven基础设置,pom文件初始化内容含义,以及如何使用maven命令,再进行衍生,如何在linux系统上启动运行封装好的jar包。
随着越来越多的框架,项目中的jar包越来越多,需要下载jar包,放在当前工程指定位置,通过maven可以管理项目,依赖对应的jar包可以自动下载。使用maven可以自动化构建、测试、打包和发布项目。在依赖中,包含:
groupID:公司业务线名
artifactID:产品线名-模块名
version:版本号
如引入log4j2时候有以下依赖坐标:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.12.1</version>
</dependency>
其中,版本号一般包括:主版本号.次版本号.修订号
eg:初始1.0.0 -> 修改bug 1.0.1 -> 功能调整 1.1.1
主版本号一般在修改了产品方向的新功能修改,次版本号在新增类、接口时修改。
二、idea中设置maven
maven安装比较简单,直接官网下载安装就行。对于maven的设置,主要包括:选择maven安装路径,配置私服steeings.xml,设置项目jar包存放路径。
当创建好maven项目后,在默认pom坐标中,有以下代码,具体释义如下:
在上图的行号9后,通过<packaging>jar</packaging>,可以设置当前项目打jar包,web工程需要打war包。
maven基本设置介绍完了,那么如何得到坐标呢?
可以通过https://mvnrepository.com/查询常用jar包依赖。serarch后,点击所需要的jar包,建议选择使用量较多的版本号,则可以得到jar包的依赖坐标。在pom中<dependencies>标签下导入所需要的坐标。
三、maven命令使用
在idea中,点击右侧maven,打开Lifecycle,可以看到很多maven的常用命令。
以下就各个常用的命令进行介绍。
mvn clean:
清理编译或打包后的项目结构,也就是会把target文件删除。
mvn compile:
编译项目,生成target文件,将当前项目中的字节类,编译为字节码文件。
mvn compile只能编译核心程序,如果要编译测试程序,需要使用mvn test-compile
mvn package:
打包项目,生成jar或war文件,需要注意test代码必须都通过,否则会打包失败。项目默认时,是生成jar包,最终生成如下箭头所示:
打包成war包过程中,可能会报错“import: Enty[import from realm ClassRealm[maven. api, parent: null]]”,这是由于war包打包插件和jdk版本不匹配:pom.xml中添加以下代码即可。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
</plugins>
</build>
mvn install:
打包后上传到maven本地仓库。安装后,其他本地项目可以<dependency>引入mvn package打包好的jar包。
本地仓库:小节“二、idea中设置maven”下,设置的maven依赖存储路径。
mvn deploy:
只打包,上传到maven私服仓库。
mvn test:
执行测试源码,会在target文件夹下生成test-classes文件夹。注意:该命名会执行test文件,并给出报告,其中,报告在surefire-reports文件夹下。
在maven工程中,test文件下,主要是用于单测的书写,其中需要注意:
- 测试类中,测试方法名,必须以test开头命名
- 测试类必须以Test命名开头或结尾,建议**Test。
- 只有当命名规范,maven才能识别到测试类。
四、Linux运行封装的jar包
当存在springboot项目时,代码中包括@SpringBootApplication及其启动类。按住键盘ctrl,通过mvn clean、mvn package封装当前项目为jar包。
依赖于Linux系统的开源性、安全性、稳定性、灵活性以及低成本,项目代码是基于Linux系统运行的。
此时,在堡垒机中,需要先将jar包上传到指定文件夹下。假设需要上传到/export/servers/jdk-1.6.0_25/lib/目录下,Linux命令为:
scp /path/to/your/local/jarfile.jar username@linux_server_ip:/home/export/servers/jdk-1.8.0_201/lib/
- 将 /path/to/your/local/jarfile.jar 替换为你本地JAR包的路径。
- 将 username 替换为你在Linux系统中的用户名。
- 将 linux_server_ip 替换为你的Linux服务器的IP地址。
- 输入你的Linux系统密码(如果需要)来完成上传。
当jar包被赋予可执行权限后,才可以在Linux直接运行:
chmod +x jarfile.jar
在堡垒机中,存在多个运行进程,此时,读者的功能是对当前Java进程进行扫描(读者如不需要可直接运行java -jar jarfile.jar)。
查询本机Java进程命令为:
ps -ef | grep java
假设得到进程号为126。在SpringBootApplication启动类中,如果存在需要的输出内容,这时可以将打印写入到指定“applicationOut.log”文件夹:
java -Djava.ext.dirs=/home/export/servers/jdk-1.6.0_25/lib/
-server -jar jarfile.jar 126 > applicationOut.log 2>&1 &
- java: 运行 Java 程序的命令
- -Djava.ext.dirs=/home/export/servers/jdk-1.6.0_25/lib/: 这是用来指定 Java 扩展库的目录的参数。在这个命令中,指定了 /home/export/servers/jdk-1.6.0_25/lib/ 目录作为 Java 扩展库的目录。
- -server: 告诉 JVM 在“server”模式下运行,这样 JVM 会优化为长时间运行的服务。
- -jar jarfile.jar: 指定了要执行的 JAR 文件的路径和名称。
- 126: 运行jar包的进程号。
sa.log 2>&1: 将标准输出和标准错误输出重定向到 applicationOut.log 文件中。> sa.log 表示将标准输出重定向到 applicationOut.log 文件,2>&1 表示将标准错误输出重定向到标准输出,也就是都输出到 applicationOut.log 文件中。
- &: 这个符号表示在后台运行这个命令,这样命令执行后会立即返回,不会阻塞当前终端。
以上是maven的整篇文章,可以实现对maven常见命令的基本熟悉。运行jar包小节作为参考,代码已在Liunx系统上运行过,功能需求可能有不同,可供参考。
版权归原作者 hahaha_2568 所有, 如有侵权,请联系我们删除。