6-Maven的使用

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类属性:

  1. 内置属性(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}表示项目构件开始时间;

  2. 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}相同;

  3. 自定义属性(在pom.xml文件的标签下定义的Maven属性)

    复制代码
       <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>

    在其他地方使用${maven.build.timestamp.format}使用该属性值。

  4. settings.xml文件属性(与pom属性同理,用户使用以settings.开头的属性引用settings.xml文件中的XML元素值)

    ${settings.localRepository}表示本地仓库的地址;

  5. Java系统属性(所有的Java系统属性都可以使用Maven属性引用)

    使用mvn help:system命令可查看所有的Java系统属性;

    System.getProperties()可得到所有的Java属性;

    ${user.home}表示用户目录;

  6. 环境变量属性(所有的环境变量都可以用以env.开头的Maven属性引用)

    使用mvn help:system命令可查看所有环境变量;

    ${env.JAVA_HOME}表示JAVA_HOME环境变量的值;

代码中使用Maven属性

通过在application.yml 或者 application.properties 配置文件中设置对应的属性,然后再通过@Value()引用配置文件的变量。具体如下

  1. 第一步:在pom.xml中配置

    xml 复制代码
    <build>
        <resources>
            <resource>
                <!--使用maven渲染properties-->
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
  2. 第二步:在yml中使用@@使用maven变量;在properties中使用${}使用maven变量

    yml 复制代码
    # 当前是application.yml配置文件
    
    userhome: @user.home@
    localRepostory: @settings.localRepository@
    properties 复制代码
    # 当前是application.properties配置文件
    
    project.dir=${project.build.directory}
  3. 第三步:在java代码中使用

    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);
        }
    }
    tex 复制代码
    控制台输出:
        
    projectDir~~~~~~~~~~~~~~~~~~~D:\workspace-boyun\boyunproduct_6.0\bocloud.cop\bocloud.cop.booter\target
    userHome~~~~~~~~~~~~~~~~~~~C:\\Users\\a
    localRepostory~~~~~~~~~~~~~~~~~~~D:\\MavenWarehouseBoCloud
    timestamp~~~~~~~~~~~~~~~~~~~20240123-1513

IDEA中使用Maven

相关推荐
缺点内向3 小时前
Java:创建、读取或更新 Excel 文档
java·excel
带刺的坐椅3 小时前
Solon v3.4.7, v3.5.6, v3.6.1 发布(国产优秀应用开发框架)
java·spring·solon
四谎真好看5 小时前
Java 黑马程序员学习笔记(进阶篇18)
java·笔记·学习·学习笔记
桦说编程5 小时前
深入解析CompletableFuture源码实现(2)———双源输入
java·后端·源码
java_t_t5 小时前
ZIP工具类
java·zip
lang201509285 小时前
Spring Boot优雅关闭全解析
java·spring boot·后端
pengzhuofan6 小时前
第10章 Maven
java·maven
百锦再7 小时前
Vue Scoped样式混淆问题详解与解决方案
java·前端·javascript·数据库·vue.js·学习·.net
刘一说7 小时前
Spring Boot 启动慢?启动过程深度解析与优化策略
java·spring boot·后端
壹佰大多7 小时前
【spring如何扫描一个路径下被注解修饰的类】
java·后端·spring