6-Maven的使用
常用maven命令
//常用maven命令
mvn -v //查看版本
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 //按照pom文件制定的打包方式和插件打包,生成的包会在target目录下
mvn clean test //执行单元测试
mvn clean deploy //发布到当前项目的jar包到本地仓库和远程仓库
mvn clean install //使其他项目使用这个jar,会安装到maven本地仓库中
mvn archetype:generate //创建项目架构
mvn dependency:list //查看已解析依赖
mvn dependency:tree //看到依赖树
mvn dependency:analyze //查看依赖的工具
mvn help:system //打印所有可用的环境变量和Java系统属性mvn help:active-profiles //查看当前激活的profiles
mvn help:all-profiles //查看所有profiles
mvn help:effective-pom //查看完整的pom信息mvn help:effective-settings//查看有效setttings配置
mvn -X // 查看当前项目的所有mvn配置
Maven 属性【变量】
Maven共有6类属性:
-
内置属性(Maven预定义,用户可以直接使用)
${basedir}表示项目根目录,即包含pom.xml文件的目录;
${version}表示项目版本;
p r o j e c t . b a s e d i r 同 {project.basedir}同 project.basedir同{basedir};
${project.baseUri}表示项目文件地址;
${maven.build.timestamp}表示项目构件开始时间;
-
POM属性(使用pom属性可以引用到pom.xml文件对应元素的值)
${project.build.directory}表示主源码路径;
${project.build.sourceEncoding}表示主源码的编码格式;
${project.build.sourceDirectory}表示主源码路径;
${project.build.finalName}表示输出文件名称;
p r o j e c t . v e r s i o n 表示项目版本 , 与 {project.version}表示项目版本,与 project.version表示项目版本,与{version}相同;
-
自定义属性(在pom.xml文件的标签下定义的Maven属性)
<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
在其他地方使用${maven.build.timestamp.format}使用该属性值。
-
settings.xml文件属性(与pom属性同理,用户使用以settings.开头的属性引用settings.xml文件中的XML元素值)
${settings.localRepository}表示本地仓库的地址;
-
Java系统属性(所有的Java系统属性都可以使用Maven属性引用)
使用mvn help:system命令可查看所有的Java系统属性;
System.getProperties()可得到所有的Java属性;
${user.home}表示用户目录;
-
环境变量属性(所有的环境变量都可以用以env.开头的Maven属性引用)
使用mvn help:system命令可查看所有环境变量;
${env.JAVA_HOME}表示JAVA_HOME环境变量的值;
代码中使用Maven属性
通过在application.yml 或者 application.properties 配置文件中设置对应的属性,然后再通过@Value()引用配置文件的变量。具体如下
-
第一步:在pom.xml中配置
<build> <resources> <resource> <!--使用maven渲染properties--> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
-
第二步:在yml中使用@@使用maven变量;在properties中使用${}使用maven变量
# 当前是application.yml配置文件 userhome: @user.home@ localRepostory: @settings.localRepository@
# 当前是application.properties配置文件 project.dir=${project.build.directory}
-
第三步:在java代码中使用
@RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @Slf4j public class ApplicationTest { @Value("${project.dir}") private String projectDir; @Value("${userhome}") private String userHome; @Value("${localRepostory}") private String localRepostory; @Value("${timestamp}") private String timestamp; @Test public void test(){ System.out.println("projectDir~~~~~~~~~~~~~~~~~~~"+projectDir); System.out.println("userHome~~~~~~~~~~~~~~~~~~~"+userHome); System.out.println("localRepostory~~~~~~~~~~~~~~~~~~~"+localRepostory); System.out.println("timestamp~~~~~~~~~~~~~~~~~~~"+timestamp); } }
控制台输出: projectDir~~~~~~~~~~~~~~~~~~~D:\workspace-boyun\boyunproduct_6.0\bocloud.cop\bocloud.cop.booter\target userHome~~~~~~~~~~~~~~~~~~~C:\\Users\\a localRepostory~~~~~~~~~~~~~~~~~~~D:\\MavenWarehouseBoCloud timestamp~~~~~~~~~~~~~~~~~~~20240123-1513